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

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 (195) hide show
  1. package/README.md +4 -4
  2. package/dist/commonjs/Declarations/Constants.d.ts +5 -0
  3. package/dist/commonjs/Declarations/Constants.d.ts.map +1 -1
  4. package/dist/commonjs/Declarations/Constants.js +6 -1
  5. package/dist/commonjs/Declarations/Constants.js.map +1 -1
  6. package/dist/commonjs/export/base.js +25 -14
  7. package/dist/commonjs/export/base.js.map +1 -1
  8. package/dist/commonjs/export/log.js +5 -4
  9. package/dist/commonjs/export/log.js.map +1 -1
  10. package/dist/commonjs/export/metric.js +5 -4
  11. package/dist/commonjs/export/metric.js.map +1 -1
  12. package/dist/commonjs/export/statsbeat/customerStatsbeat.d.ts +125 -0
  13. package/dist/commonjs/export/statsbeat/customerStatsbeat.d.ts.map +1 -0
  14. package/dist/commonjs/export/statsbeat/customerStatsbeat.js +480 -0
  15. package/dist/commonjs/export/statsbeat/customerStatsbeat.js.map +1 -0
  16. package/dist/commonjs/export/statsbeat/longIntervalStatsbeatMetrics.d.ts +7 -7
  17. package/dist/commonjs/export/statsbeat/longIntervalStatsbeatMetrics.d.ts.map +1 -1
  18. package/dist/commonjs/export/statsbeat/longIntervalStatsbeatMetrics.js +69 -30
  19. package/dist/commonjs/export/statsbeat/longIntervalStatsbeatMetrics.js.map +1 -1
  20. package/dist/commonjs/export/statsbeat/networkStatsbeatMetrics.d.ts +6 -1
  21. package/dist/commonjs/export/statsbeat/networkStatsbeatMetrics.d.ts.map +1 -1
  22. package/dist/commonjs/export/statsbeat/networkStatsbeatMetrics.js +115 -43
  23. package/dist/commonjs/export/statsbeat/networkStatsbeatMetrics.js.map +1 -1
  24. package/dist/commonjs/export/statsbeat/statsbeatExporter.d.ts +7 -0
  25. package/dist/commonjs/export/statsbeat/statsbeatExporter.d.ts.map +1 -1
  26. package/dist/commonjs/export/statsbeat/statsbeatExporter.js +25 -5
  27. package/dist/commonjs/export/statsbeat/statsbeatExporter.js.map +1 -1
  28. package/dist/commonjs/export/statsbeat/statsbeatMetrics.js +6 -8
  29. package/dist/commonjs/export/statsbeat/statsbeatMetrics.js.map +1 -1
  30. package/dist/commonjs/export/statsbeat/types.d.ts +52 -0
  31. package/dist/commonjs/export/statsbeat/types.d.ts.map +1 -1
  32. package/dist/commonjs/export/statsbeat/types.js +75 -1
  33. package/dist/commonjs/export/statsbeat/types.js.map +1 -1
  34. package/dist/commonjs/export/trace.js +6 -5
  35. package/dist/commonjs/export/trace.js.map +1 -1
  36. package/dist/commonjs/generated/applicationInsightsClient.js +9 -4
  37. package/dist/commonjs/generated/applicationInsightsClient.js.map +1 -1
  38. package/dist/commonjs/generated/models/mappers.js +145 -68
  39. package/dist/commonjs/generated/models/mappers.js.map +1 -1
  40. package/dist/commonjs/index.d.ts +2 -1
  41. package/dist/commonjs/index.d.ts.map +1 -1
  42. package/dist/commonjs/index.js +5 -3
  43. package/dist/commonjs/index.js.map +1 -1
  44. package/dist/commonjs/platform/nodejs/baseSender.d.ts +1 -0
  45. package/dist/commonjs/platform/nodejs/baseSender.d.ts.map +1 -1
  46. package/dist/commonjs/platform/nodejs/baseSender.js +101 -34
  47. package/dist/commonjs/platform/nodejs/baseSender.js.map +1 -1
  48. package/dist/commonjs/platform/nodejs/context/context.d.ts +0 -1
  49. package/dist/commonjs/platform/nodejs/context/context.d.ts.map +1 -1
  50. package/dist/commonjs/platform/nodejs/context/context.js +4 -8
  51. package/dist/commonjs/platform/nodejs/context/context.js.map +1 -1
  52. package/dist/commonjs/platform/nodejs/httpSender.js +11 -4
  53. package/dist/commonjs/platform/nodejs/httpSender.js.map +1 -1
  54. package/dist/commonjs/platform/nodejs/index.d.ts +1 -0
  55. package/dist/commonjs/platform/nodejs/index.d.ts.map +1 -1
  56. package/dist/commonjs/platform/nodejs/index.js +1 -0
  57. package/dist/commonjs/platform/nodejs/index.js.map +1 -1
  58. package/dist/commonjs/platform/nodejs/persist/fileAccessControl.js +7 -7
  59. package/dist/commonjs/platform/nodejs/persist/fileAccessControl.js.map +1 -1
  60. package/dist/commonjs/platform/nodejs/persist/fileSystemPersist.d.ts +9 -1
  61. package/dist/commonjs/platform/nodejs/persist/fileSystemPersist.d.ts.map +1 -1
  62. package/dist/commonjs/platform/nodejs/persist/fileSystemPersist.js +37 -16
  63. package/dist/commonjs/platform/nodejs/persist/fileSystemPersist.js.map +1 -1
  64. package/dist/commonjs/{sampling.d.ts → sampling/percentageSampler.d.ts} +2 -3
  65. package/dist/commonjs/sampling/percentageSampler.d.ts.map +1 -0
  66. package/dist/commonjs/{sampling.js → sampling/percentageSampler.js} +6 -39
  67. package/dist/commonjs/sampling/percentageSampler.js.map +1 -0
  68. package/dist/commonjs/sampling/rateLimitedSampler.d.ts +58 -0
  69. package/dist/commonjs/sampling/rateLimitedSampler.d.ts.map +1 -0
  70. package/dist/commonjs/sampling/rateLimitedSampler.js +118 -0
  71. package/dist/commonjs/sampling/rateLimitedSampler.js.map +1 -0
  72. package/dist/commonjs/sampling/samplingUtils.d.ts +17 -0
  73. package/dist/commonjs/sampling/samplingUtils.d.ts.map +1 -0
  74. package/dist/commonjs/sampling/samplingUtils.js +94 -0
  75. package/dist/commonjs/sampling/samplingUtils.js.map +1 -0
  76. package/dist/commonjs/tsdoc-metadata.json +11 -11
  77. package/dist/commonjs/types.d.ts.map +1 -1
  78. package/dist/commonjs/types.js +1 -0
  79. package/dist/commonjs/types.js.map +1 -1
  80. package/dist/commonjs/utils/common.js +2 -3
  81. package/dist/commonjs/utils/common.js.map +1 -1
  82. package/dist/commonjs/utils/connectionStringParser.js +3 -3
  83. package/dist/commonjs/utils/connectionStringParser.js.map +1 -1
  84. package/dist/commonjs/utils/constants/applicationinsights.d.ts +1 -1
  85. package/dist/commonjs/utils/constants/applicationinsights.js +1 -1
  86. package/dist/commonjs/utils/constants/applicationinsights.js.map +1 -1
  87. package/dist/commonjs/utils/eventhub.js +5 -2
  88. package/dist/commonjs/utils/eventhub.js.map +1 -1
  89. package/dist/commonjs/utils/logUtils.js +10 -9
  90. package/dist/commonjs/utils/logUtils.js.map +1 -1
  91. package/dist/commonjs/utils/metricUtils.d.ts.map +1 -1
  92. package/dist/commonjs/utils/metricUtils.js +6 -6
  93. package/dist/commonjs/utils/metricUtils.js.map +1 -1
  94. package/dist/commonjs/utils/spanUtils.d.ts.map +1 -1
  95. package/dist/commonjs/utils/spanUtils.js +16 -14
  96. package/dist/commonjs/utils/spanUtils.js.map +1 -1
  97. package/dist/esm/Declarations/Constants.d.ts +5 -0
  98. package/dist/esm/Declarations/Constants.d.ts.map +1 -1
  99. package/dist/esm/Declarations/Constants.js +5 -0
  100. package/dist/esm/Declarations/Constants.js.map +1 -1
  101. package/dist/esm/export/base.js +25 -14
  102. package/dist/esm/export/base.js.map +1 -1
  103. package/dist/esm/export/log.js +5 -4
  104. package/dist/esm/export/log.js.map +1 -1
  105. package/dist/esm/export/metric.js +5 -4
  106. package/dist/esm/export/metric.js.map +1 -1
  107. package/dist/esm/export/statsbeat/customerStatsbeat.d.ts +125 -0
  108. package/dist/esm/export/statsbeat/customerStatsbeat.d.ts.map +1 -0
  109. package/dist/esm/export/statsbeat/customerStatsbeat.js +475 -0
  110. package/dist/esm/export/statsbeat/customerStatsbeat.js.map +1 -0
  111. package/dist/esm/export/statsbeat/longIntervalStatsbeatMetrics.d.ts +7 -7
  112. package/dist/esm/export/statsbeat/longIntervalStatsbeatMetrics.d.ts.map +1 -1
  113. package/dist/esm/export/statsbeat/longIntervalStatsbeatMetrics.js +68 -30
  114. package/dist/esm/export/statsbeat/longIntervalStatsbeatMetrics.js.map +1 -1
  115. package/dist/esm/export/statsbeat/networkStatsbeatMetrics.d.ts +6 -1
  116. package/dist/esm/export/statsbeat/networkStatsbeatMetrics.d.ts.map +1 -1
  117. package/dist/esm/export/statsbeat/networkStatsbeatMetrics.js +115 -43
  118. package/dist/esm/export/statsbeat/networkStatsbeatMetrics.js.map +1 -1
  119. package/dist/esm/export/statsbeat/statsbeatExporter.d.ts +7 -0
  120. package/dist/esm/export/statsbeat/statsbeatExporter.d.ts.map +1 -1
  121. package/dist/esm/export/statsbeat/statsbeatExporter.js +25 -5
  122. package/dist/esm/export/statsbeat/statsbeatExporter.js.map +1 -1
  123. package/dist/esm/export/statsbeat/statsbeatMetrics.js +6 -8
  124. package/dist/esm/export/statsbeat/statsbeatMetrics.js.map +1 -1
  125. package/dist/esm/export/statsbeat/types.d.ts +52 -0
  126. package/dist/esm/export/statsbeat/types.d.ts.map +1 -1
  127. package/dist/esm/export/statsbeat/types.js +73 -0
  128. package/dist/esm/export/statsbeat/types.js.map +1 -1
  129. package/dist/esm/export/trace.js +6 -5
  130. package/dist/esm/export/trace.js.map +1 -1
  131. package/dist/esm/generated/applicationInsightsClient.js +9 -4
  132. package/dist/esm/generated/applicationInsightsClient.js.map +1 -1
  133. package/dist/esm/generated/models/mappers.js +145 -68
  134. package/dist/esm/generated/models/mappers.js.map +1 -1
  135. package/dist/esm/index.d.ts +2 -1
  136. package/dist/esm/index.d.ts.map +1 -1
  137. package/dist/esm/index.js +2 -1
  138. package/dist/esm/index.js.map +1 -1
  139. package/dist/esm/platform/nodejs/baseSender.d.ts +1 -0
  140. package/dist/esm/platform/nodejs/baseSender.d.ts.map +1 -1
  141. package/dist/esm/platform/nodejs/baseSender.js +104 -37
  142. package/dist/esm/platform/nodejs/baseSender.js.map +1 -1
  143. package/dist/esm/platform/nodejs/context/context.d.ts +0 -1
  144. package/dist/esm/platform/nodejs/context/context.d.ts.map +1 -1
  145. package/dist/esm/platform/nodejs/context/context.js +4 -8
  146. package/dist/esm/platform/nodejs/context/context.js.map +1 -1
  147. package/dist/esm/platform/nodejs/httpSender.js +11 -4
  148. package/dist/esm/platform/nodejs/httpSender.js.map +1 -1
  149. package/dist/esm/platform/nodejs/index.d.ts +1 -0
  150. package/dist/esm/platform/nodejs/index.d.ts.map +1 -1
  151. package/dist/esm/platform/nodejs/index.js +1 -0
  152. package/dist/esm/platform/nodejs/index.js.map +1 -1
  153. package/dist/esm/platform/nodejs/persist/fileAccessControl.js +7 -7
  154. package/dist/esm/platform/nodejs/persist/fileAccessControl.js.map +1 -1
  155. package/dist/esm/platform/nodejs/persist/fileSystemPersist.d.ts +9 -1
  156. package/dist/esm/platform/nodejs/persist/fileSystemPersist.d.ts.map +1 -1
  157. package/dist/esm/platform/nodejs/persist/fileSystemPersist.js +37 -16
  158. package/dist/esm/platform/nodejs/persist/fileSystemPersist.js.map +1 -1
  159. package/dist/esm/{sampling.d.ts → sampling/percentageSampler.d.ts} +2 -3
  160. package/dist/esm/sampling/percentageSampler.d.ts.map +1 -0
  161. package/dist/esm/{sampling.js → sampling/percentageSampler.js} +6 -39
  162. package/dist/esm/sampling/percentageSampler.js.map +1 -0
  163. package/dist/esm/sampling/rateLimitedSampler.d.ts +58 -0
  164. package/dist/esm/sampling/rateLimitedSampler.d.ts.map +1 -0
  165. package/dist/esm/sampling/rateLimitedSampler.js +114 -0
  166. package/dist/esm/sampling/rateLimitedSampler.js.map +1 -0
  167. package/dist/esm/sampling/samplingUtils.d.ts +17 -0
  168. package/dist/esm/sampling/samplingUtils.d.ts.map +1 -0
  169. package/dist/esm/sampling/samplingUtils.js +89 -0
  170. package/dist/esm/sampling/samplingUtils.js.map +1 -0
  171. package/dist/esm/types.d.ts.map +1 -1
  172. package/dist/esm/types.js +2 -1
  173. package/dist/esm/types.js.map +1 -1
  174. package/dist/esm/utils/common.js +2 -3
  175. package/dist/esm/utils/common.js.map +1 -1
  176. package/dist/esm/utils/connectionStringParser.js +3 -3
  177. package/dist/esm/utils/connectionStringParser.js.map +1 -1
  178. package/dist/esm/utils/constants/applicationinsights.d.ts +1 -1
  179. package/dist/esm/utils/constants/applicationinsights.js +1 -1
  180. package/dist/esm/utils/constants/applicationinsights.js.map +1 -1
  181. package/dist/esm/utils/eventhub.js +5 -2
  182. package/dist/esm/utils/eventhub.js.map +1 -1
  183. package/dist/esm/utils/logUtils.js +10 -9
  184. package/dist/esm/utils/logUtils.js.map +1 -1
  185. package/dist/esm/utils/metricUtils.d.ts.map +1 -1
  186. package/dist/esm/utils/metricUtils.js +6 -6
  187. package/dist/esm/utils/metricUtils.js.map +1 -1
  188. package/dist/esm/utils/spanUtils.d.ts.map +1 -1
  189. package/dist/esm/utils/spanUtils.js +16 -14
  190. package/dist/esm/utils/spanUtils.js.map +1 -1
  191. package/package.json +21 -26
  192. package/dist/commonjs/sampling.d.ts.map +0 -1
  193. package/dist/commonjs/sampling.js.map +0 -1
  194. package/dist/esm/sampling.d.ts.map +0 -1
  195. package/dist/esm/sampling.js.map +0 -1
@@ -7,6 +7,8 @@ import * as Constants from "../Declarations/Constants.js";
7
7
  * @internal
8
8
  */
9
9
  export class ConnectionStringParser {
10
+ static FIELDS_SEPARATOR = ";";
11
+ static FIELD_KEY_VALUE_SEPARATOR = "=";
10
12
  static parse(connectionString) {
11
13
  if (!connectionString) {
12
14
  return {};
@@ -19,7 +21,7 @@ export class ConnectionStringParser {
19
21
  // only save fields with valid formats
20
22
  const key = kvParts[0].toLowerCase();
21
23
  const value = kvParts[1];
22
- return Object.assign(Object.assign({}, fields), { [key]: value });
24
+ return { ...fields, [key]: value };
23
25
  }
24
26
  diag.error("Connection string key-value pair is invalid: Entire connection string will be discarded");
25
27
  isValid = false;
@@ -73,6 +75,4 @@ export class ConnectionStringParser {
73
75
  return regexp.test(iKey);
74
76
  }
75
77
  }
76
- ConnectionStringParser.FIELDS_SEPARATOR = ";";
77
- ConnectionStringParser.FIELD_KEY_VALUE_SEPARATOR = "=";
78
78
  //# sourceMappingURL=connectionStringParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connectionStringParser.js","sourceRoot":"","sources":["../../../src/utils/connectionStringParser.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 { ConnectionString, ConnectionStringKey } from \"../Declarations/Contracts/index.js\";\nimport * as Constants from \"../Declarations/Constants.js\";\n\n/**\n * ConnectionString parser.\n * @internal\n */\nexport class ConnectionStringParser {\n private static readonly FIELDS_SEPARATOR = \";\";\n\n private static readonly FIELD_KEY_VALUE_SEPARATOR = \"=\";\n\n public static parse(connectionString?: string): ConnectionString {\n if (!connectionString) {\n return {};\n }\n\n const kvPairs = connectionString.split(ConnectionStringParser.FIELDS_SEPARATOR);\n let isValid = true;\n\n const result: ConnectionString = kvPairs.reduce((fields: ConnectionString, kv: string) => {\n const kvParts = kv.split(ConnectionStringParser.FIELD_KEY_VALUE_SEPARATOR);\n\n if (kvParts.length === 2) {\n // only save fields with valid formats\n const key = kvParts[0].toLowerCase() as ConnectionStringKey;\n const value = kvParts[1];\n return { ...fields, [key]: value };\n }\n diag.error(\n \"Connection string key-value pair is invalid: Entire connection string will be discarded\",\n );\n isValid = false;\n return fields;\n }, {});\n\n if (isValid && Object.keys(result).length > 0) {\n // this is a valid connection string, so parse the results\n\n if (result.endpointsuffix) {\n // use endpoint suffix where overrides are not provided\n const locationPrefix = result.location ? `${result.location}.` : \"\";\n result.ingestionendpoint =\n result.ingestionendpoint || `https://${locationPrefix}dc.${result.endpointsuffix}`;\n result.liveendpoint =\n result.liveendpoint || `https://${locationPrefix}live.${result.endpointsuffix}`;\n }\n\n result.ingestionendpoint = result.ingestionendpoint\n ? ConnectionStringParser.sanitizeUrl(result.ingestionendpoint)\n : Constants.DEFAULT_BREEZE_ENDPOINT;\n result.liveendpoint = result.liveendpoint\n ? ConnectionStringParser.sanitizeUrl(result.liveendpoint)\n : Constants.DEFAULT_LIVEMETRICS_ENDPOINT;\n if (result.authorization && result.authorization.toLowerCase() !== \"ikey\") {\n diag.warn(\n `Connection String contains an unsupported 'Authorization' value. Defaulting to 'Authorization=ikey'`,\n );\n }\n } else {\n diag.error(\"An invalid connection string was passed in. There may be telemetry loss\");\n }\n\n return result;\n }\n\n public static sanitizeUrl(url: string): string {\n let newUrl = url.trim();\n if (newUrl.indexOf(\"https://\") < 0) {\n // Try to update http to https\n newUrl = newUrl.replace(\"http://\", \"https://\");\n }\n // Remove final slash if present\n if (newUrl[newUrl.length - 1] === \"/\") {\n newUrl = newUrl.slice(0, -1);\n }\n return newUrl;\n }\n\n public static validateInstrumentationKey(iKey: string): boolean {\n if (iKey.startsWith(\"InstrumentationKey=\")) {\n const startIndex = iKey.indexOf(\"InstrumentationKey=\") + \"InstrumentationKey=\".length;\n const endIndex = iKey.indexOf(\";\", startIndex);\n iKey = iKey.substring(startIndex, endIndex);\n }\n const UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\n const regexp = new RegExp(UUID_Regex);\n return regexp.test(iKey);\n }\n}\n"]}
1
+ {"version":3,"file":"connectionStringParser.js","sourceRoot":"","sources":["../../../src/utils/connectionStringParser.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 { ConnectionString, ConnectionStringKey } from \"../Declarations/Contracts/index.js\";\nimport * as Constants from \"../Declarations/Constants.js\";\n\n/**\n * ConnectionString parser.\n * @internal\n */\nexport class ConnectionStringParser {\n private static readonly FIELDS_SEPARATOR = \";\";\n\n private static readonly FIELD_KEY_VALUE_SEPARATOR = \"=\";\n\n public static parse(connectionString?: string): ConnectionString {\n if (!connectionString) {\n return {};\n }\n\n const kvPairs = connectionString.split(ConnectionStringParser.FIELDS_SEPARATOR);\n let isValid = true;\n\n const result: ConnectionString = kvPairs.reduce((fields: ConnectionString, kv: string) => {\n const kvParts = kv.split(ConnectionStringParser.FIELD_KEY_VALUE_SEPARATOR);\n\n if (kvParts.length === 2) {\n // only save fields with valid formats\n const key = kvParts[0].toLowerCase() as ConnectionStringKey;\n const value = kvParts[1];\n return { ...fields, [key]: value };\n }\n diag.error(\n \"Connection string key-value pair is invalid: Entire connection string will be discarded\",\n );\n isValid = false;\n return fields;\n }, {});\n\n if (isValid && Object.keys(result).length > 0) {\n // this is a valid connection string, so parse the results\n\n if (result.endpointsuffix) {\n // use endpoint suffix where overrides are not provided\n const locationPrefix = result.location ? `${result.location}.` : \"\";\n result.ingestionendpoint =\n result.ingestionendpoint || `https://${locationPrefix}dc.${result.endpointsuffix}`;\n result.liveendpoint =\n result.liveendpoint || `https://${locationPrefix}live.${result.endpointsuffix}`;\n }\n\n result.ingestionendpoint = result.ingestionendpoint\n ? ConnectionStringParser.sanitizeUrl(result.ingestionendpoint)\n : Constants.DEFAULT_BREEZE_ENDPOINT;\n result.liveendpoint = result.liveendpoint\n ? ConnectionStringParser.sanitizeUrl(result.liveendpoint)\n : Constants.DEFAULT_LIVEMETRICS_ENDPOINT;\n if (result.authorization && result.authorization.toLowerCase() !== \"ikey\") {\n diag.warn(\n `Connection String contains an unsupported 'Authorization' value. Defaulting to 'Authorization=ikey'`,\n );\n }\n } else {\n diag.error(\"An invalid connection string was passed in. There may be telemetry loss\");\n }\n\n return result;\n }\n\n public static sanitizeUrl(url: string): string {\n let newUrl = url.trim();\n if (newUrl.indexOf(\"https://\") < 0) {\n // Try to update http to https\n newUrl = newUrl.replace(\"http://\", \"https://\");\n }\n // Remove final slash if present\n if (newUrl[newUrl.length - 1] === \"/\") {\n newUrl = newUrl.slice(0, -1);\n }\n return newUrl;\n }\n\n public static validateInstrumentationKey(iKey: string): boolean {\n if (iKey.startsWith(\"InstrumentationKey=\")) {\n const startIndex = iKey.indexOf(\"InstrumentationKey=\") + \"InstrumentationKey=\".length;\n const endIndex = iKey.indexOf(\";\", startIndex);\n iKey = iKey.substring(startIndex, endIndex);\n }\n const UUID_Regex = \"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$\";\n const regexp = new RegExp(UUID_Regex);\n return regexp.test(iKey);\n }\n}\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.31";
20
+ export declare const packageVersion = "1.0.0-beta.33";
21
21
  export declare enum DependencyTypes {
22
22
  InProc = "InProc",
23
23
  QueueMessage = "Queue Message",
@@ -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.31";
22
+ export const packageVersion = "1.0.0-beta.33";
23
23
  export var DependencyTypes;
24
24
  (function (DependencyTypes) {
25
25
  DependencyTypes["InProc"] = "InProc";
@@ -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.31\";\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;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"]}
@@ -13,7 +13,7 @@ const getTimeSinceEnqueued = (span) => {
13
13
  let sumEnqueueDiffs = 0;
14
14
  const startTimeMs = hrTimeToMilliseconds(span.startTime);
15
15
  span.links.forEach(({ attributes }) => {
16
- const enqueuedTime = attributes === null || attributes === void 0 ? void 0 : attributes[ENQUEUED_TIME];
16
+ const enqueuedTime = attributes?.[ENQUEUED_TIME];
17
17
  if (enqueuedTime) {
18
18
  countEnqueueDiffs += 1;
19
19
  sumEnqueueDiffs += startTimeMs - (parseFloat(enqueuedTime.toString()) || 0);
@@ -45,7 +45,10 @@ export const parseEventHubSpan = (span, baseData) => {
45
45
  case SpanKind.CONSUMER:
46
46
  baseData.type = `Queue Message | ${namespace}`;
47
47
  baseData.source = `${peerAddress}/${messageBusDestination}`;
48
- baseData.measurements = Object.assign(Object.assign({}, baseData.measurements), { [TIME_SINCE_ENQUEUED]: getTimeSinceEnqueued(span) });
48
+ baseData.measurements = {
49
+ ...baseData.measurements,
50
+ [TIME_SINCE_ENQUEUED]: getTimeSinceEnqueued(span),
51
+ };
49
52
  break;
50
53
  default: // no op
51
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"eventhub.js","sourceRoot":"","sources":["../../../src/utils/eventhub.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAG7E,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEtF;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAAC,IAAkB,EAAU,EAAE;IAC1D,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;QACpC,MAAM,YAAY,GAAG,UAAU,aAAV,UAAU,uBAAV,UAAU,CAAG,aAAa,CAAoB,CAAC;QACpE,IAAI,YAAY,EAAE,CAAC;YACjB,iBAAiB,IAAI,CAAC,CAAC;YACvB,eAAe,IAAI,WAAW,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAkB,EAClB,QAA4C,EACtC,EAAE;IACR,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAA6B,CAAC;IAC3E,MAAM,WAAW,GACf,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAC/B,SAAS,CACZ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB;IAC7C,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,SAAS,CAAW,CAAC;IAE9F,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,MAAM;YAClB,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC;YAC1B,QAAQ,CAAC,MAAM,GAAG,GAAG,WAAW,IAAI,qBAAqB,EAAE,CAAC;YAC5D,MAAM;QACR,KAAK,QAAQ,CAAC,QAAQ;YACpB,QAAQ,CAAC,IAAI,GAAG,mBAAmB,SAAS,EAAE,CAAC;YAC/C,QAAQ,CAAC,MAAM,GAAG,GAAG,WAAW,IAAI,qBAAqB,EAAE,CAAC;YAC5D,MAAM;QACR,KAAK,QAAQ,CAAC,QAAQ;YACpB,QAAQ,CAAC,IAAI,GAAG,mBAAmB,SAAS,EAAE,CAAC;YAC9C,QAAgB,CAAC,MAAM,GAAG,GAAG,WAAW,IAAI,qBAAqB,EAAE,CAAC;YACrE,QAAQ,CAAC,YAAY,mCAChB,QAAQ,CAAC,YAAY,KACxB,CAAC,mBAAmB,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC,GAClD,CAAC;YACF,MAAM;QACR,QAAQ,CAAC,QAAQ;IACnB,CAAC;AACH,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { SpanKind } from \"@opentelemetry/api\";\nimport { hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport { SEMATTRS_NET_PEER_NAME } from \"@opentelemetry/semantic-conventions\";\nimport type { ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport type { RemoteDependencyData, RequestData } from \"../generated/index.js\";\nimport { TIME_SINCE_ENQUEUED, ENQUEUED_TIME } from \"./constants/applicationinsights.js\";\nimport type { MicrosoftEventHub } from \"./constants/span/azAttributes.js\";\nimport { AzNamespace, MessageBusDestination } from \"./constants/span/azAttributes.js\";\n\n/**\n * Average span.links[].attributes.enqueuedTime\n */\nconst getTimeSinceEnqueued = (span: ReadableSpan): number => {\n let countEnqueueDiffs = 0;\n let sumEnqueueDiffs = 0;\n const startTimeMs = hrTimeToMilliseconds(span.startTime);\n\n span.links.forEach(({ attributes }) => {\n const enqueuedTime = attributes?.[ENQUEUED_TIME] as string | number;\n if (enqueuedTime) {\n countEnqueueDiffs += 1;\n sumEnqueueDiffs += startTimeMs - (parseFloat(enqueuedTime.toString()) || 0);\n }\n });\n\n return Math.max(sumEnqueueDiffs / (countEnqueueDiffs || 1), 0);\n};\n\n/**\n * Implementation of Mapping to Azure Monitor\n *\n * https://gist.github.com/lmolkova/e4215c0f44a49ef824983382762e6b92#mapping-to-azure-monitor-application-insights-telemetry\n * @internal\n */\nexport const parseEventHubSpan = (\n span: ReadableSpan,\n baseData: RequestData | RemoteDependencyData,\n): void => {\n const namespace = span.attributes[AzNamespace] as typeof MicrosoftEventHub;\n const peerAddress = (\n (span.attributes[SEMATTRS_NET_PEER_NAME] ||\n span.attributes[\"peer.address\"] ||\n \"unknown\") as string\n ).replace(/\\/$/g, \"\"); // remove trailing \"/\"\n const messageBusDestination = (span.attributes[MessageBusDestination] || \"unknown\") as string;\n\n switch (span.kind) {\n case SpanKind.CLIENT:\n baseData.type = namespace;\n baseData.target = `${peerAddress}/${messageBusDestination}`;\n break;\n case SpanKind.PRODUCER:\n baseData.type = `Queue Message | ${namespace}`;\n baseData.target = `${peerAddress}/${messageBusDestination}`;\n break;\n case SpanKind.CONSUMER:\n baseData.type = `Queue Message | ${namespace}`;\n (baseData as any).source = `${peerAddress}/${messageBusDestination}`;\n baseData.measurements = {\n ...baseData.measurements,\n [TIME_SINCE_ENQUEUED]: getTimeSinceEnqueued(span),\n };\n break;\n default: // no op\n }\n};\n"]}
1
+ {"version":3,"file":"eventhub.js","sourceRoot":"","sources":["../../../src/utils/eventhub.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAG7E,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AAExF,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAEtF;;GAEG;AACH,MAAM,oBAAoB,GAAG,CAAC,IAAkB,EAAU,EAAE;IAC1D,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAC1B,IAAI,eAAe,GAAG,CAAC,CAAC;IACxB,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEzD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE;QACpC,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC,aAAa,CAAoB,CAAC;QACpE,IAAI,YAAY,EAAE,CAAC;YACjB,iBAAiB,IAAI,CAAC,CAAC;YACvB,eAAe,IAAI,WAAW,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,iBAAiB,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjE,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAkB,EAClB,QAA4C,EACtC,EAAE;IACR,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAA6B,CAAC;IAC3E,MAAM,WAAW,GACf,CAAC,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC;QACtC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;QAC/B,SAAS,CACZ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,sBAAsB;IAC7C,MAAM,qBAAqB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,qBAAqB,CAAC,IAAI,SAAS,CAAW,CAAC;IAE9F,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,QAAQ,CAAC,MAAM;YAClB,QAAQ,CAAC,IAAI,GAAG,SAAS,CAAC;YAC1B,QAAQ,CAAC,MAAM,GAAG,GAAG,WAAW,IAAI,qBAAqB,EAAE,CAAC;YAC5D,MAAM;QACR,KAAK,QAAQ,CAAC,QAAQ;YACpB,QAAQ,CAAC,IAAI,GAAG,mBAAmB,SAAS,EAAE,CAAC;YAC/C,QAAQ,CAAC,MAAM,GAAG,GAAG,WAAW,IAAI,qBAAqB,EAAE,CAAC;YAC5D,MAAM;QACR,KAAK,QAAQ,CAAC,QAAQ;YACpB,QAAQ,CAAC,IAAI,GAAG,mBAAmB,SAAS,EAAE,CAAC;YAC9C,QAAgB,CAAC,MAAM,GAAG,GAAG,WAAW,IAAI,qBAAqB,EAAE,CAAC;YACrE,QAAQ,CAAC,YAAY,GAAG;gBACtB,GAAG,QAAQ,CAAC,YAAY;gBACxB,CAAC,mBAAmB,CAAC,EAAE,oBAAoB,CAAC,IAAI,CAAC;aAClD,CAAC;YACF,MAAM;QACR,QAAQ,CAAC,QAAQ;IACnB,CAAC;AACH,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { SpanKind } from \"@opentelemetry/api\";\nimport { hrTimeToMilliseconds } from \"@opentelemetry/core\";\nimport { SEMATTRS_NET_PEER_NAME } from \"@opentelemetry/semantic-conventions\";\nimport type { ReadableSpan } from \"@opentelemetry/sdk-trace-base\";\nimport type { RemoteDependencyData, RequestData } from \"../generated/index.js\";\nimport { TIME_SINCE_ENQUEUED, ENQUEUED_TIME } from \"./constants/applicationinsights.js\";\nimport type { MicrosoftEventHub } from \"./constants/span/azAttributes.js\";\nimport { AzNamespace, MessageBusDestination } from \"./constants/span/azAttributes.js\";\n\n/**\n * Average span.links[].attributes.enqueuedTime\n */\nconst getTimeSinceEnqueued = (span: ReadableSpan): number => {\n let countEnqueueDiffs = 0;\n let sumEnqueueDiffs = 0;\n const startTimeMs = hrTimeToMilliseconds(span.startTime);\n\n span.links.forEach(({ attributes }) => {\n const enqueuedTime = attributes?.[ENQUEUED_TIME] as string | number;\n if (enqueuedTime) {\n countEnqueueDiffs += 1;\n sumEnqueueDiffs += startTimeMs - (parseFloat(enqueuedTime.toString()) || 0);\n }\n });\n\n return Math.max(sumEnqueueDiffs / (countEnqueueDiffs || 1), 0);\n};\n\n/**\n * Implementation of Mapping to Azure Monitor\n *\n * https://gist.github.com/lmolkova/e4215c0f44a49ef824983382762e6b92#mapping-to-azure-monitor-application-insights-telemetry\n * @internal\n */\nexport const parseEventHubSpan = (\n span: ReadableSpan,\n baseData: RequestData | RemoteDependencyData,\n): void => {\n const namespace = span.attributes[AzNamespace] as typeof MicrosoftEventHub;\n const peerAddress = (\n (span.attributes[SEMATTRS_NET_PEER_NAME] ||\n span.attributes[\"peer.address\"] ||\n \"unknown\") as string\n ).replace(/\\/$/g, \"\"); // remove trailing \"/\"\n const messageBusDestination = (span.attributes[MessageBusDestination] || \"unknown\") as string;\n\n switch (span.kind) {\n case SpanKind.CLIENT:\n baseData.type = namespace;\n baseData.target = `${peerAddress}/${messageBusDestination}`;\n break;\n case SpanKind.PRODUCER:\n baseData.type = `Queue Message | ${namespace}`;\n baseData.target = `${peerAddress}/${messageBusDestination}`;\n break;\n case SpanKind.CONSUMER:\n baseData.type = `Queue Message | ${namespace}`;\n (baseData as any).source = `${peerAddress}/${messageBusDestination}`;\n baseData.measurements = {\n ...baseData.measurements,\n [TIME_SINCE_ENQUEUED]: getTimeSinceEnqueued(span),\n };\n break;\n default: // no op\n }\n};\n"]}
@@ -93,18 +93,20 @@ export function logToEnvelope(log, ikey) {
93
93
  version: 1,
94
94
  data: {
95
95
  baseType,
96
- baseData: Object.assign(Object.assign({}, baseData), { properties,
97
- measurements }),
96
+ baseData: {
97
+ ...baseData,
98
+ properties,
99
+ measurements,
100
+ },
98
101
  },
99
102
  };
100
103
  }
101
104
  function createTagsFromLog(log) {
102
- var _a, _b;
103
105
  const tags = createTagsFromResource(log.resource);
104
- if ((_a = log.spanContext) === null || _a === void 0 ? void 0 : _a.traceId) {
106
+ if (log.spanContext?.traceId) {
105
107
  tags[KnownContextTagKeys.AiOperationId] = log.spanContext.traceId;
106
108
  }
107
- if ((_b = log.spanContext) === null || _b === void 0 ? void 0 : _b.spanId) {
109
+ if (log.spanContext?.spanId) {
108
110
  tags[KnownContextTagKeys.AiOperationParentId] = log.spanContext.spanId;
109
111
  }
110
112
  if (log.attributes[KnownContextTagKeys.AiOperationName]) {
@@ -176,10 +178,9 @@ function getLegacyApplicationInsightsName(log) {
176
178
  return name;
177
179
  }
178
180
  function getLegacyApplicationInsightsMeasurements(log) {
179
- var _a;
180
181
  let measurements = {};
181
- if ((_a = log.body) === null || _a === void 0 ? void 0 : _a.measurements) {
182
- measurements = Object.assign({}, log.body.measurements);
182
+ if (log.body?.measurements) {
183
+ measurements = { ...log.body.measurements };
183
184
  }
184
185
  return measurements;
185
186
  }
@@ -206,7 +207,7 @@ function getLegacyApplicationInsightsBaseData(log) {
206
207
  baseData = log.body;
207
208
  break;
208
209
  }
209
- if (typeof (baseData === null || baseData === void 0 ? void 0 : baseData.message) === "object") {
210
+ if (typeof baseData?.message === "object") {
210
211
  baseData.message = JSON.stringify(baseData.message);
211
212
  }
212
213
  }
@@ -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 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 +1 @@
1
- {"version":3,"file":"metricUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/metricUtils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,SAAS,EACT,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,aAAa,IAAI,QAAQ,EAG1B,MAAM,uBAAuB,CAAC;AAS/B,OAAO,EAAE,cAAc,EAA6B,MAAM,8BAA8B,CAAC;AAgCzF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,OAAO,GACpB,QAAQ,EAAE,CAoFZ;AAED,wBAAgB,WAAW,IAAI,OAAO,CAIrC;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAK1C;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,oBAAoB,CAAC,GACpF,OAAO,CAET;AAED,wBAAgB,aAAa,IAAI,cAAc,CAK9C"}
1
+ {"version":3,"file":"metricUtils.d.ts","sourceRoot":"","sources":["../../../src/utils/metricUtils.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,SAAS,EACT,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,KAAK,EACV,aAAa,IAAI,QAAQ,EAG1B,MAAM,uBAAuB,CAAC;AAU/B,OAAO,EAAE,cAAc,EAA6B,MAAM,8BAA8B,CAAC;AAgCzF;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,OAAO,GACpB,QAAQ,EAAE,CAoFZ;AAED,wBAAgB,WAAW,IAAI,OAAO,CAIrC;AAED,wBAAgB,gBAAgB,IAAI,OAAO,CAK1C;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,oBAAoB,CAAC,GACpF,OAAO,CAET;AAED,wBAAgB,aAAa,IAAI,cAAc,CAK9C"}
@@ -44,7 +44,7 @@ export function resourceMetricsToEnvelope(metrics, ikey, isStatsbeat) {
44
44
  if (isStatsbeat) {
45
45
  envelopeName = "Microsoft.ApplicationInsights.Statsbeat";
46
46
  const context = getInstance();
47
- tags = Object.assign({}, context.tags);
47
+ tags = { ...context.tags };
48
48
  }
49
49
  else {
50
50
  envelopeName = "Microsoft.ApplicationInsights.Metric";
@@ -103,7 +103,9 @@ export function resourceMetricsToEnvelope(metrics, ikey, isStatsbeat) {
103
103
  version: 1,
104
104
  data: {
105
105
  baseType: "MetricData",
106
- baseData: Object.assign({}, baseData),
106
+ baseData: {
107
+ ...baseData,
108
+ },
107
109
  },
108
110
  };
109
111
  envelopes.push(envelope);
@@ -116,13 +118,11 @@ export function isAksAttach() {
116
118
  return !!(process.env[ENV_AZURE_MONITOR_AUTO_ATTACH] === "true" && process.env.AKS_ARM_NAMESPACE_ID);
117
119
  }
118
120
  export function shouldSendToOtlp() {
119
- var _a;
120
121
  return !!(process.env[ENV_OTLP_METRICS_ENDPOINT] &&
121
- ((_a = process.env[ENV_OTEL_METRICS_EXPORTER]) === null || _a === void 0 ? void 0 : _a.includes("otlp")));
122
+ process.env[ENV_OTEL_METRICS_EXPORTER]?.includes("otlp"));
122
123
  }
123
124
  export function isStandardMetric(dataPoint) {
124
- var _a;
125
- return ((_a = dataPoint.attributes) === null || _a === void 0 ? void 0 : _a["_MS.IsAutocollected"]) === "True";
125
+ return dataPoint.attributes?.["_MS.IsAutocollected"] === "True";
126
126
  }
127
127
  export function getAttachType() {
128
128
  if (process.env[AZURE_MONITOR_AUTO_ATTACH] === "true") {
@@ -1 +1 @@
1
- {"version":3,"file":"metricUtils.js","sourceRoot":"","sources":["../../../src/utils/metricUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Attributes } from \"@opentelemetry/api\";\nimport type {\n DataPoint,\n ExponentialHistogram,\n Histogram,\n ResourceMetrics,\n} from \"@opentelemetry/sdk-metrics\";\nimport { DataPointType } from \"@opentelemetry/sdk-metrics\";\nimport type {\n TelemetryItem as Envelope,\n MetricsData,\n MetricDataPoint,\n} from \"../generated/index.js\";\nimport { createTagsFromResource } from \"./common.js\";\nimport { BreezePerformanceCounterNames, OTelPerformanceCounterNames, Tags } from \"../types.js\";\nimport {\n ENV_OTEL_METRICS_EXPORTER,\n ENV_OTLP_METRICS_ENDPOINT,\n ENV_AZURE_MONITOR_AUTO_ATTACH,\n ENV_APPLICATIONINSIGHTS_METRICS_TO_LOGANALYTICS_ENABLED,\n} from \"../Declarations/Constants.js\";\nimport { AttachTypeName, AZURE_MONITOR_AUTO_ATTACH } from \"../export/statsbeat/types.js\";\nimport { getInstance } from \"../platform/index.js\";\n\nconst breezePerformanceCountersMap = new Map<string, string>([\n [OTelPerformanceCounterNames.PRIVATE_BYTES, BreezePerformanceCounterNames.PRIVATE_BYTES],\n [OTelPerformanceCounterNames.AVAILABLE_BYTES, BreezePerformanceCounterNames.AVAILABLE_BYTES],\n [OTelPerformanceCounterNames.PROCESSOR_TIME, BreezePerformanceCounterNames.PROCESSOR_TIME],\n [\n OTelPerformanceCounterNames.PROCESS_TIME_STANDARD,\n BreezePerformanceCounterNames.PROCESS_TIME_STANDARD,\n ],\n [\n OTelPerformanceCounterNames.PROCESS_TIME_NORMALIZED,\n BreezePerformanceCounterNames.PROCESS_TIME_NORMALIZED,\n ],\n [OTelPerformanceCounterNames.REQUEST_RATE, BreezePerformanceCounterNames.REQUEST_RATE],\n [OTelPerformanceCounterNames.REQUEST_DURATION, BreezePerformanceCounterNames.REQUEST_DURATION],\n [OTelPerformanceCounterNames.EXCEPTION_RATE, BreezePerformanceCounterNames.EXCEPTION_RATE],\n]);\n\nfunction createPropertiesFromMetricAttributes(attributes?: Attributes): {\n [propertyName: string]: string;\n} {\n const properties: { [propertyName: string]: string } = {};\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n properties[key] = attributes[key] as string;\n }\n }\n return properties;\n}\n\n/**\n * Metric to Azure envelope parsing.\n * @internal\n */\nexport function resourceMetricsToEnvelope(\n metrics: ResourceMetrics,\n ikey: string,\n isStatsbeat?: boolean,\n): Envelope[] {\n const envelopes: Envelope[] = [];\n const time = new Date();\n const instrumentationKey = ikey;\n let tags: Tags;\n let envelopeName: string;\n\n if (isStatsbeat) {\n envelopeName = \"Microsoft.ApplicationInsights.Statsbeat\";\n const context = getInstance();\n tags = { ...context.tags };\n } else {\n envelopeName = \"Microsoft.ApplicationInsights.Metric\";\n tags = createTagsFromResource(metrics.resource);\n }\n\n metrics.scopeMetrics.forEach((scopeMetric) => {\n scopeMetric.metrics.forEach((metric) => {\n metric.dataPoints.forEach((dataPoint) => {\n const baseData: MetricsData = {\n metrics: [],\n version: 2,\n properties: {},\n };\n baseData.properties = createPropertiesFromMetricAttributes(dataPoint.attributes);\n\n // If we're not exporting statsbeat, the metric is *not* a standard metric and the env var is set to false, we should not send the metric.\n if (\n shouldSendToOtlp() &&\n isAksAttach() &&\n !isStandardMetric(dataPoint) &&\n process.env[ENV_APPLICATIONINSIGHTS_METRICS_TO_LOGANALYTICS_ENABLED] === \"false\" &&\n !isStatsbeat\n ) {\n return;\n }\n\n if (shouldSendToOtlp() && isAksAttach() && !isStatsbeat) {\n baseData.properties[\"_MS.SentToAMW\"] = \"True\";\n } else if (isAksAttach() && !isStatsbeat) {\n baseData.properties[\"_MS.SentToAMW\"] = \"False\";\n }\n let perfCounterName;\n if (breezePerformanceCountersMap.has(metric.descriptor.name)) {\n perfCounterName = breezePerformanceCountersMap.get(metric.descriptor.name);\n }\n const metricDataPoint: MetricDataPoint = {\n name: perfCounterName ? perfCounterName : metric.descriptor.name,\n value: 0,\n dataPointType: \"Aggregation\",\n };\n if (\n metric.dataPointType === DataPointType.SUM ||\n metric.dataPointType === DataPointType.GAUGE\n ) {\n metricDataPoint.value = dataPoint.value as number;\n metricDataPoint.count = 1;\n } else {\n metricDataPoint.value = (dataPoint.value as Histogram).sum || 0;\n metricDataPoint.count = (dataPoint.value as Histogram).count;\n metricDataPoint.max = (dataPoint.value as Histogram).max;\n metricDataPoint.min = (dataPoint.value as Histogram).min;\n }\n baseData.metrics.push(metricDataPoint);\n const envelope: Envelope = {\n name: envelopeName,\n time: time,\n sampleRate: 100, // Metrics are never sampled\n instrumentationKey: instrumentationKey,\n tags: tags,\n version: 1,\n data: {\n baseType: \"MetricData\",\n baseData: {\n ...baseData,\n },\n },\n };\n envelopes.push(envelope);\n });\n });\n });\n\n return envelopes;\n}\n\nexport function isAksAttach(): boolean {\n return !!(\n process.env[ENV_AZURE_MONITOR_AUTO_ATTACH] === \"true\" && process.env.AKS_ARM_NAMESPACE_ID\n );\n}\n\nexport function shouldSendToOtlp(): boolean {\n return !!(\n process.env[ENV_OTLP_METRICS_ENDPOINT] &&\n process.env[ENV_OTEL_METRICS_EXPORTER]?.includes(\"otlp\")\n );\n}\n\nexport function isStandardMetric(\n dataPoint: DataPoint<number> | DataPoint<Histogram> | DataPoint<ExponentialHistogram>,\n): boolean {\n return dataPoint.attributes?.[\"_MS.IsAutocollected\"] === \"True\";\n}\n\nexport function getAttachType(): AttachTypeName {\n if (process.env[AZURE_MONITOR_AUTO_ATTACH] === \"true\") {\n return AttachTypeName.INTEGRATED_AUTO;\n }\n return AttachTypeName.MANUAL;\n}\n"]}
1
+ {"version":3,"file":"metricUtils.js","sourceRoot":"","sources":["../../../src/utils/metricUtils.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport type { Attributes } from \"@opentelemetry/api\";\nimport type {\n DataPoint,\n ExponentialHistogram,\n Histogram,\n ResourceMetrics,\n} from \"@opentelemetry/sdk-metrics\";\nimport { DataPointType } from \"@opentelemetry/sdk-metrics\";\nimport type {\n TelemetryItem as Envelope,\n MetricsData,\n MetricDataPoint,\n} from \"../generated/index.js\";\nimport { createTagsFromResource } from \"./common.js\";\nimport type { Tags } from \"../types.js\";\nimport { BreezePerformanceCounterNames, OTelPerformanceCounterNames } from \"../types.js\";\nimport {\n ENV_OTEL_METRICS_EXPORTER,\n ENV_OTLP_METRICS_ENDPOINT,\n ENV_AZURE_MONITOR_AUTO_ATTACH,\n ENV_APPLICATIONINSIGHTS_METRICS_TO_LOGANALYTICS_ENABLED,\n} from \"../Declarations/Constants.js\";\nimport { AttachTypeName, AZURE_MONITOR_AUTO_ATTACH } from \"../export/statsbeat/types.js\";\nimport { getInstance } from \"../platform/index.js\";\n\nconst breezePerformanceCountersMap = new Map<string, string>([\n [OTelPerformanceCounterNames.PRIVATE_BYTES, BreezePerformanceCounterNames.PRIVATE_BYTES],\n [OTelPerformanceCounterNames.AVAILABLE_BYTES, BreezePerformanceCounterNames.AVAILABLE_BYTES],\n [OTelPerformanceCounterNames.PROCESSOR_TIME, BreezePerformanceCounterNames.PROCESSOR_TIME],\n [\n OTelPerformanceCounterNames.PROCESS_TIME_STANDARD,\n BreezePerformanceCounterNames.PROCESS_TIME_STANDARD,\n ],\n [\n OTelPerformanceCounterNames.PROCESS_TIME_NORMALIZED,\n BreezePerformanceCounterNames.PROCESS_TIME_NORMALIZED,\n ],\n [OTelPerformanceCounterNames.REQUEST_RATE, BreezePerformanceCounterNames.REQUEST_RATE],\n [OTelPerformanceCounterNames.REQUEST_DURATION, BreezePerformanceCounterNames.REQUEST_DURATION],\n [OTelPerformanceCounterNames.EXCEPTION_RATE, BreezePerformanceCounterNames.EXCEPTION_RATE],\n]);\n\nfunction createPropertiesFromMetricAttributes(attributes?: Attributes): {\n [propertyName: string]: string;\n} {\n const properties: { [propertyName: string]: string } = {};\n if (attributes) {\n for (const key of Object.keys(attributes)) {\n properties[key] = attributes[key] as string;\n }\n }\n return properties;\n}\n\n/**\n * Metric to Azure envelope parsing.\n * @internal\n */\nexport function resourceMetricsToEnvelope(\n metrics: ResourceMetrics,\n ikey: string,\n isStatsbeat?: boolean,\n): Envelope[] {\n const envelopes: Envelope[] = [];\n const time = new Date();\n const instrumentationKey = ikey;\n let tags: Tags;\n let envelopeName: string;\n\n if (isStatsbeat) {\n envelopeName = \"Microsoft.ApplicationInsights.Statsbeat\";\n const context = getInstance();\n tags = { ...context.tags };\n } else {\n envelopeName = \"Microsoft.ApplicationInsights.Metric\";\n tags = createTagsFromResource(metrics.resource);\n }\n\n metrics.scopeMetrics.forEach((scopeMetric) => {\n scopeMetric.metrics.forEach((metric) => {\n metric.dataPoints.forEach((dataPoint) => {\n const baseData: MetricsData = {\n metrics: [],\n version: 2,\n properties: {},\n };\n baseData.properties = createPropertiesFromMetricAttributes(dataPoint.attributes);\n\n // If we're not exporting statsbeat, the metric is *not* a standard metric and the env var is set to false, we should not send the metric.\n if (\n shouldSendToOtlp() &&\n isAksAttach() &&\n !isStandardMetric(dataPoint) &&\n process.env[ENV_APPLICATIONINSIGHTS_METRICS_TO_LOGANALYTICS_ENABLED] === \"false\" &&\n !isStatsbeat\n ) {\n return;\n }\n\n if (shouldSendToOtlp() && isAksAttach() && !isStatsbeat) {\n baseData.properties[\"_MS.SentToAMW\"] = \"True\";\n } else if (isAksAttach() && !isStatsbeat) {\n baseData.properties[\"_MS.SentToAMW\"] = \"False\";\n }\n let perfCounterName;\n if (breezePerformanceCountersMap.has(metric.descriptor.name)) {\n perfCounterName = breezePerformanceCountersMap.get(metric.descriptor.name);\n }\n const metricDataPoint: MetricDataPoint = {\n name: perfCounterName ? perfCounterName : metric.descriptor.name,\n value: 0,\n dataPointType: \"Aggregation\",\n };\n if (\n metric.dataPointType === DataPointType.SUM ||\n metric.dataPointType === DataPointType.GAUGE\n ) {\n metricDataPoint.value = dataPoint.value as number;\n metricDataPoint.count = 1;\n } else {\n metricDataPoint.value = (dataPoint.value as Histogram).sum || 0;\n metricDataPoint.count = (dataPoint.value as Histogram).count;\n metricDataPoint.max = (dataPoint.value as Histogram).max;\n metricDataPoint.min = (dataPoint.value as Histogram).min;\n }\n baseData.metrics.push(metricDataPoint);\n const envelope: Envelope = {\n name: envelopeName,\n time: time,\n sampleRate: 100, // Metrics are never sampled\n instrumentationKey: instrumentationKey,\n tags: tags,\n version: 1,\n data: {\n baseType: \"MetricData\",\n baseData: {\n ...baseData,\n },\n },\n };\n envelopes.push(envelope);\n });\n });\n });\n\n return envelopes;\n}\n\nexport function isAksAttach(): boolean {\n return !!(\n process.env[ENV_AZURE_MONITOR_AUTO_ATTACH] === \"true\" && process.env.AKS_ARM_NAMESPACE_ID\n );\n}\n\nexport function shouldSendToOtlp(): boolean {\n return !!(\n process.env[ENV_OTLP_METRICS_ENDPOINT] &&\n process.env[ENV_OTEL_METRICS_EXPORTER]?.includes(\"otlp\")\n );\n}\n\nexport function isStandardMetric(\n dataPoint: DataPoint<number> | DataPoint<Histogram> | DataPoint<ExponentialHistogram>,\n): boolean {\n return dataPoint.attributes?.[\"_MS.IsAutocollected\"] === \"True\";\n}\n\nexport function getAttachType(): AttachTypeName {\n if (process.env[AZURE_MONITOR_AUTO_ATTACH] === \"true\") {\n return AttachTypeName.INTEGRATED_AUTO;\n }\n return AttachTypeName.MANUAL;\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;AA2O/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;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"}
@@ -13,8 +13,8 @@ import { msToTimeSpan } from "./breezeUtils.js";
13
13
  function createTagsFromSpan(span) {
14
14
  const tags = createTagsFromResource(span.resource);
15
15
  tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;
16
- if (span.parentSpanId) {
17
- tags[KnownContextTagKeys.AiOperationParentId] = span.parentSpanId;
16
+ if (span.parentSpanContext?.spanId) {
17
+ tags[KnownContextTagKeys.AiOperationParentId] = span.parentSpanContext.spanId;
18
18
  }
19
19
  const endUserId = span.attributes[SEMATTRS_ENDUSER_ID];
20
20
  if (endUserId) {
@@ -45,7 +45,7 @@ function createTagsFromSpan(span) {
45
45
  const url = new URL(String(httpUrl));
46
46
  tags[KnownContextTagKeys.AiOperationName] = String(`${httpMethod} ${url.pathname}`).substring(0, MaxPropertyLengths.TEN_BIT);
47
47
  }
48
- catch (_a) {
48
+ catch {
49
49
  /* no-op */
50
50
  }
51
51
  }
@@ -93,11 +93,10 @@ function createPropertiesFromSpan(span) {
93
93
  return [properties, measurements];
94
94
  }
95
95
  function createDependencyData(span) {
96
- var _a;
97
96
  const remoteDependencyData = {
98
97
  name: span.name, // Default
99
98
  id: `${span.spanContext().spanId}`,
100
- success: ((_a = span.status) === null || _a === void 0 ? void 0 : _a.code) !== SpanStatusCode.ERROR,
99
+ success: span.status?.code !== SpanStatusCode.ERROR,
101
100
  resultCode: "0",
102
101
  type: "Dependency",
103
102
  duration: msToTimeSpan(hrTimeToMilliseconds(span.duration)),
@@ -106,7 +105,7 @@ function createDependencyData(span) {
106
105
  if (span.kind === SpanKind.PRODUCER) {
107
106
  remoteDependencyData.type = DependencyTypes.QueueMessage;
108
107
  }
109
- if (span.kind === SpanKind.INTERNAL && span.parentSpanId) {
108
+ if (span.kind === SpanKind.INTERNAL && span.parentSpanContext) {
110
109
  remoteDependencyData.type = DependencyTypes.InProc;
111
110
  }
112
111
  const httpMethod = getHttpMethod(span.attributes);
@@ -120,7 +119,7 @@ function createDependencyData(span) {
120
119
  const dependencyUrl = new URL(String(httpUrl));
121
120
  remoteDependencyData.name = `${httpMethod} ${dependencyUrl.pathname}`;
122
121
  }
123
- catch (_b) {
122
+ catch {
124
123
  /* no-op */
125
124
  }
126
125
  }
@@ -146,7 +145,7 @@ function createDependencyData(span) {
146
145
  }
147
146
  }
148
147
  }
149
- catch (_c) {
148
+ catch {
150
149
  /* no-op */
151
150
  }
152
151
  remoteDependencyData.target = `${target}`;
@@ -215,8 +214,9 @@ function createDependencyData(span) {
215
214
  function createRequestData(span) {
216
215
  const requestData = {
217
216
  id: `${span.spanContext().spanId}`,
218
- success: span.status.code !== SpanStatusCode.ERROR &&
219
- (Number(getHttpStatusCode(span.attributes)) || 0) < 400,
217
+ success: span.status.code !== SpanStatusCode.UNSET
218
+ ? span.status.code === SpanStatusCode.OK
219
+ : (Number(getHttpStatusCode(span.attributes)) || 0) < 400,
220
220
  responseCode: "0",
221
221
  duration: msToTimeSpan(hrTimeToMilliseconds(span.duration)),
222
222
  version: 2,
@@ -314,8 +314,11 @@ export function readableSpanToEnvelope(span, ikey) {
314
314
  version: 1,
315
315
  data: {
316
316
  baseType,
317
- baseData: Object.assign(Object.assign({}, baseData), { properties,
318
- measurements }),
317
+ baseData: {
318
+ ...baseData,
319
+ properties,
320
+ measurements,
321
+ },
319
322
  },
320
323
  };
321
324
  }
@@ -327,7 +330,6 @@ export function spanEventsToEnvelopes(span, ikey) {
327
330
  const envelopes = [];
328
331
  if (span.events) {
329
332
  span.events.forEach((event) => {
330
- var _a;
331
333
  let baseType;
332
334
  const time = hrTimeToDate(event.time);
333
335
  let name = "";
@@ -335,7 +337,7 @@ export function spanEventsToEnvelopes(span, ikey) {
335
337
  const properties = createPropertiesFromSpanAttributes(event.attributes);
336
338
  const tags = createTagsFromResource(span.resource);
337
339
  tags[KnownContextTagKeys.AiOperationId] = span.spanContext().traceId;
338
- const spanId = (_a = span.spanContext()) === null || _a === void 0 ? void 0 : _a.spanId;
340
+ const spanId = span.spanContext().spanId;
339
341
  if (spanId) {
340
342
  tags[KnownContextTagKeys.AiOperationParentId] = spanId;
341
343
  }