@azure/opentelemetry-instrumentation-azure-sdk 1.0.0-beta.5 → 1.0.0-beta.7

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 (129) hide show
  1. package/README.md +7 -2
  2. package/dist/browser/configuration.d.ts +21 -0
  3. package/dist/browser/configuration.d.ts.map +1 -0
  4. package/{dist-esm/src → dist/browser}/configuration.js +2 -2
  5. package/dist/browser/configuration.js.map +1 -0
  6. package/dist/browser/index.d.ts +3 -0
  7. package/dist/browser/index.d.ts.map +1 -0
  8. package/dist/browser/index.js +5 -0
  9. package/{dist-esm/src → dist/browser}/index.js.map +1 -1
  10. package/dist/browser/instrumentation-browser.d.mts.map +1 -0
  11. package/dist/browser/instrumentation-browser.mjs.map +1 -0
  12. package/dist/browser/instrumentation.d.ts +35 -0
  13. package/{dist-esm/src/instrumentation.browser.js → dist/browser/instrumentation.js} +5 -5
  14. package/dist/browser/instrumenter.d.ts +13 -0
  15. package/dist/browser/instrumenter.d.ts.map +1 -0
  16. package/{dist-esm/src → dist/browser}/instrumenter.js +4 -4
  17. package/dist/browser/instrumenter.js.map +1 -0
  18. package/dist/browser/logger.d.ts +5 -0
  19. package/dist/browser/logger.d.ts.map +1 -0
  20. package/{dist-esm/src → dist/browser}/logger.js +1 -1
  21. package/{dist-esm/src → dist/browser}/logger.js.map +1 -1
  22. package/dist/browser/package.json +3 -0
  23. package/dist/browser/spanWrapper.d.ts +20 -0
  24. package/dist/browser/spanWrapper.d.ts.map +1 -0
  25. package/{dist-esm/src → dist/browser}/spanWrapper.js +6 -2
  26. package/dist/browser/spanWrapper.js.map +1 -0
  27. package/dist/browser/transformations.d.ts +29 -0
  28. package/dist/browser/transformations.d.ts.map +1 -0
  29. package/{dist-esm/src → dist/browser}/transformations.js +4 -19
  30. package/dist/browser/transformations.js.map +1 -0
  31. package/dist/commonjs/configuration.d.ts +21 -0
  32. package/dist/commonjs/configuration.d.ts.map +1 -0
  33. package/dist/commonjs/configuration.js +35 -0
  34. package/dist/commonjs/configuration.js.map +1 -0
  35. package/dist/commonjs/index.d.ts +3 -0
  36. package/dist/commonjs/index.d.ts.map +1 -0
  37. package/dist/commonjs/index.js +8 -0
  38. package/dist/commonjs/index.js.map +1 -0
  39. package/{types/3.1/opentelemetry-instrumentation-azure-sdk.d.ts → dist/commonjs/instrumentation.d.ts} +39 -33
  40. package/dist/commonjs/instrumentation.d.ts.map +1 -0
  41. package/dist/commonjs/instrumentation.js +57 -0
  42. package/dist/commonjs/instrumentation.js.map +1 -0
  43. package/dist/commonjs/instrumenter.d.ts +13 -0
  44. package/dist/commonjs/instrumenter.d.ts.map +1 -0
  45. package/dist/commonjs/instrumenter.js +51 -0
  46. package/dist/commonjs/instrumenter.js.map +1 -0
  47. package/dist/commonjs/logger.d.ts +5 -0
  48. package/dist/commonjs/logger.d.ts.map +1 -0
  49. package/dist/commonjs/logger.js +11 -0
  50. package/dist/commonjs/logger.js.map +1 -0
  51. package/dist/commonjs/package.json +3 -0
  52. package/dist/commonjs/spanWrapper.d.ts +20 -0
  53. package/dist/commonjs/spanWrapper.d.ts.map +1 -0
  54. package/dist/commonjs/spanWrapper.js +54 -0
  55. package/dist/commonjs/spanWrapper.js.map +1 -0
  56. package/dist/commonjs/transformations.d.ts +29 -0
  57. package/dist/commonjs/transformations.d.ts.map +1 -0
  58. package/dist/commonjs/transformations.js +55 -0
  59. package/dist/commonjs/transformations.js.map +1 -0
  60. package/{types/latest → dist/commonjs}/tsdoc-metadata.json +1 -1
  61. package/dist/esm/configuration.d.ts +21 -0
  62. package/dist/esm/configuration.d.ts.map +1 -0
  63. package/dist/esm/configuration.js +31 -0
  64. package/dist/esm/configuration.js.map +1 -0
  65. package/dist/esm/index.d.ts +3 -0
  66. package/dist/esm/index.d.ts.map +1 -0
  67. package/dist/esm/index.js +5 -0
  68. package/dist/esm/index.js.map +1 -0
  69. package/dist/esm/instrumentation.d.ts +39 -0
  70. package/dist/esm/instrumentation.d.ts.map +1 -0
  71. package/{dist-esm/src → dist/esm}/instrumentation.js +4 -4
  72. package/dist/esm/instrumentation.js.map +1 -0
  73. package/dist/esm/instrumenter.d.ts +13 -0
  74. package/dist/esm/instrumenter.d.ts.map +1 -0
  75. package/dist/esm/instrumenter.js +47 -0
  76. package/dist/esm/instrumenter.js.map +1 -0
  77. package/dist/esm/logger.d.ts +5 -0
  78. package/dist/esm/logger.d.ts.map +1 -0
  79. package/dist/esm/logger.js +8 -0
  80. package/dist/esm/logger.js.map +1 -0
  81. package/dist/esm/package.json +3 -0
  82. package/dist/esm/spanWrapper.d.ts +20 -0
  83. package/dist/esm/spanWrapper.d.ts.map +1 -0
  84. package/dist/esm/spanWrapper.js +50 -0
  85. package/dist/esm/spanWrapper.js.map +1 -0
  86. package/dist/esm/transformations.d.ts +29 -0
  87. package/dist/esm/transformations.d.ts.map +1 -0
  88. package/dist/esm/transformations.js +51 -0
  89. package/dist/esm/transformations.js.map +1 -0
  90. package/dist/react-native/configuration.d.ts +21 -0
  91. package/dist/react-native/configuration.d.ts.map +1 -0
  92. package/dist/react-native/configuration.js +31 -0
  93. package/dist/react-native/configuration.js.map +1 -0
  94. package/dist/react-native/index.d.ts +3 -0
  95. package/dist/react-native/index.d.ts.map +1 -0
  96. package/dist/react-native/index.js +5 -0
  97. package/dist/react-native/index.js.map +1 -0
  98. package/dist/react-native/instrumentation.d.ts +39 -0
  99. package/dist/react-native/instrumentation.d.ts.map +1 -0
  100. package/dist/react-native/instrumentation.js +52 -0
  101. package/dist/react-native/instrumentation.js.map +1 -0
  102. package/dist/react-native/instrumenter.d.ts +13 -0
  103. package/dist/react-native/instrumenter.d.ts.map +1 -0
  104. package/dist/react-native/instrumenter.js +47 -0
  105. package/dist/react-native/instrumenter.js.map +1 -0
  106. package/dist/react-native/logger.d.ts +5 -0
  107. package/dist/react-native/logger.d.ts.map +1 -0
  108. package/dist/react-native/logger.js +8 -0
  109. package/dist/react-native/logger.js.map +1 -0
  110. package/dist/react-native/package.json +3 -0
  111. package/dist/react-native/spanWrapper.d.ts +20 -0
  112. package/dist/react-native/spanWrapper.d.ts.map +1 -0
  113. package/dist/react-native/spanWrapper.js +50 -0
  114. package/dist/react-native/spanWrapper.js.map +1 -0
  115. package/dist/react-native/transformations.d.ts +29 -0
  116. package/dist/react-native/transformations.d.ts.map +1 -0
  117. package/dist/react-native/transformations.js +51 -0
  118. package/dist/react-native/transformations.js.map +1 -0
  119. package/package.json +75 -67
  120. package/types/latest/opentelemetry-instrumentation-azure-sdk.d.ts +15 -0
  121. package/dist/index.js +0 -246
  122. package/dist/index.js.map +0 -1
  123. package/dist-esm/src/configuration.js.map +0 -1
  124. package/dist-esm/src/index.js +0 -5
  125. package/dist-esm/src/instrumentation.browser.js.map +0 -1
  126. package/dist-esm/src/instrumentation.js.map +0 -1
  127. package/dist-esm/src/instrumenter.js.map +0 -1
  128. package/dist-esm/src/spanWrapper.js.map +0 -1
  129. package/dist-esm/src/transformations.js.map +0 -1
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.AzureSdkInstrumentation = void 0;
6
+ exports.createAzureSdkInstrumentation = createAzureSdkInstrumentation;
7
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
8
+ const instrumenter_js_1 = require("./instrumenter.js");
9
+ const configuration_js_1 = require("./configuration.js");
10
+ /**
11
+ * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.
12
+ */
13
+ class AzureSdkInstrumentation extends instrumentation_1.InstrumentationBase {
14
+ constructor(options = {}) {
15
+ super("@azure/opentelemetry-instrumentation-azure-sdk", configuration_js_1.SDK_VERSION, Object.assign({}, options));
16
+ }
17
+ /**
18
+ * Entrypoint for the module registration.
19
+ *
20
+ * @returns The patched \@azure/core-tracing module after setting its instrumenter.
21
+ */
22
+ init() {
23
+ const result = new instrumentation_1.InstrumentationNodeModuleDefinition("@azure/core-tracing", ["^1.0.0-preview.14", "^1.0.0"], (moduleExports) => {
24
+ if (typeof moduleExports.useInstrumenter === "function") {
25
+ moduleExports.useInstrumenter(new instrumenter_js_1.OpenTelemetryInstrumenter());
26
+ }
27
+ return moduleExports;
28
+ });
29
+ // Needed to support 1.0.0-preview.14
30
+ result.includePrerelease = true;
31
+ return result;
32
+ }
33
+ }
34
+ exports.AzureSdkInstrumentation = AzureSdkInstrumentation;
35
+ /**
36
+ * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.
37
+ *
38
+ * When registered, any Azure data plane package will begin emitting tracing spans for internal calls
39
+ * as well as network calls
40
+ *
41
+ * Example usage:
42
+ * ```ts
43
+ * const openTelemetryInstrumentation = require("@opentelemetry/instrumentation");
44
+ * openTelemetryInstrumentation.registerInstrumentations({
45
+ * instrumentations: [createAzureSdkInstrumentation()],
46
+ * })
47
+ * ```
48
+ *
49
+ * @remarks
50
+ *
51
+ * As OpenTelemetry instrumentations rely on patching required modules, you should register
52
+ * this instrumentation as early as possible and before loading any Azure Client Libraries.
53
+ */
54
+ function createAzureSdkInstrumentation(options = {}) {
55
+ return new AzureSdkInstrumentation(options);
56
+ }
57
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAuElC,sEAIC;AAzED,oEAMwC;AAExC,uDAA8D;AAC9D,yDAAiD;AAOjD;;GAEG;AACH,MAAa,uBAAwB,SAAQ,qCAAmB;IAC9D,YAAY,UAA0C,EAAE;QACtD,KAAK,CACH,gDAAgD,EAChD,8BAAW,EACX,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAC3B,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACO,IAAI;QACZ,MAAM,MAAM,GAAoC,IAAI,qDAAmC,CACrF,qBAAqB,EACrB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAC/B,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,OAAO,aAAa,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;gBACxD,aAAa,CAAC,eAAe,CAAC,IAAI,2CAAyB,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC,CACF,CAAC;QACF,qCAAqC;QACrC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AA7BD,0DA6BC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,6BAA6B,CAC3C,UAA0C,EAAE;IAE5C,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n Instrumentation,\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n} from \"@opentelemetry/instrumentation\";\n\nimport { OpenTelemetryInstrumenter } from \"./instrumenter.js\";\nimport { SDK_VERSION } from \"./configuration.js\";\n\n/**\n * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.\n */\nexport interface AzureSdkInstrumentationOptions extends InstrumentationConfig {}\n\n/**\n * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.\n */\nexport class AzureSdkInstrumentation extends InstrumentationBase {\n constructor(options: AzureSdkInstrumentationOptions = {}) {\n super(\n \"@azure/opentelemetry-instrumentation-azure-sdk\",\n SDK_VERSION,\n Object.assign({}, options),\n );\n }\n /**\n * Entrypoint for the module registration.\n *\n * @returns The patched \\@azure/core-tracing module after setting its instrumenter.\n */\n protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[] {\n const result: InstrumentationModuleDefinition = new InstrumentationNodeModuleDefinition(\n \"@azure/core-tracing\",\n [\"^1.0.0-preview.14\", \"^1.0.0\"],\n (moduleExports) => {\n if (typeof moduleExports.useInstrumenter === \"function\") {\n moduleExports.useInstrumenter(new OpenTelemetryInstrumenter());\n }\n\n return moduleExports;\n },\n );\n // Needed to support 1.0.0-preview.14\n result.includePrerelease = true;\n return result;\n }\n}\n\n/**\n * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.\n *\n * When registered, any Azure data plane package will begin emitting tracing spans for internal calls\n * as well as network calls\n *\n * Example usage:\n * ```ts\n * const openTelemetryInstrumentation = require(\"@opentelemetry/instrumentation\");\n * openTelemetryInstrumentation.registerInstrumentations({\n * instrumentations: [createAzureSdkInstrumentation()],\n * })\n * ```\n *\n * @remarks\n *\n * As OpenTelemetry instrumentations rely on patching required modules, you should register\n * this instrumentation as early as possible and before loading any Azure Client Libraries.\n */\nexport function createAzureSdkInstrumentation(\n options: AzureSdkInstrumentationOptions = {},\n): Instrumentation {\n return new AzureSdkInstrumentation(options);\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { Instrumenter, InstrumenterSpanOptions, TracingContext, TracingSpan } from "@azure/core-tracing";
2
+ import { W3CTraceContextPropagator } from "@opentelemetry/core";
3
+ export declare const propagator: W3CTraceContextPropagator;
4
+ export declare class OpenTelemetryInstrumenter implements Instrumenter {
5
+ startSpan(name: string, spanOptions: InstrumenterSpanOptions): {
6
+ span: TracingSpan;
7
+ tracingContext: TracingContext;
8
+ };
9
+ withContext<CallbackArgs extends unknown[], Callback extends (...args: CallbackArgs) => ReturnType<Callback>>(tracingContext: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType<Callback>;
10
+ parseTraceparentHeader(traceparentHeader: string): TracingContext;
11
+ createRequestHeaders(tracingContext?: TracingContext): Record<string, string>;
12
+ }
13
+ //# sourceMappingURL=instrumenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumenter.d.ts","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,cAAc,EACd,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAmB,MAAM,qBAAqB,CAAC;AAOjF,eAAO,MAAM,UAAU,2BAAkC,CAAC;AAE1D,qBAAa,yBAA0B,YAAW,YAAY;IAC5D,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,uBAAuB,GACnC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,cAAc,EAAE,cAAc,CAAA;KAAE;IA2BxD,WAAW,CACT,YAAY,SAAS,OAAO,EAAE,EAC9B,QAAQ,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,KAAK,UAAU,CAAC,QAAQ,CAAC,EAEhE,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,GAAG,YAAY,EAAE,YAAY,GAC5B,UAAU,CAAC,QAAQ,CAAC;IASvB,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,GAAG,cAAc;IAQjE,oBAAoB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAK9E"}
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.OpenTelemetryInstrumenter = exports.propagator = void 0;
6
+ const api_1 = require("@opentelemetry/api");
7
+ const core_1 = require("@opentelemetry/core");
8
+ const spanWrapper_js_1 = require("./spanWrapper.js");
9
+ const configuration_js_1 = require("./configuration.js");
10
+ const transformations_js_1 = require("./transformations.js");
11
+ // While default propagation is user-configurable, Azure services always use the W3C implementation.
12
+ exports.propagator = new core_1.W3CTraceContextPropagator();
13
+ class OpenTelemetryInstrumenter {
14
+ startSpan(name, spanOptions) {
15
+ let ctx = (spanOptions === null || spanOptions === void 0 ? void 0 : spanOptions.tracingContext) || api_1.context.active();
16
+ let span;
17
+ if ((0, configuration_js_1.envVarToBoolean)("AZURE_TRACING_DISABLED")) {
18
+ // disable only our spans but not any downstream spans
19
+ span = api_1.trace.wrapSpanContext(api_1.INVALID_SPAN_CONTEXT);
20
+ }
21
+ else {
22
+ // Create our span
23
+ span = api_1.trace
24
+ .getTracer(spanOptions.packageName, spanOptions.packageVersion)
25
+ .startSpan(name, (0, transformations_js_1.toSpanOptions)(spanOptions), ctx);
26
+ if ((0, configuration_js_1.envVarToBoolean)("AZURE_HTTP_TRACING_CHILDREN_DISABLED") &&
27
+ name.toUpperCase().startsWith("HTTP")) {
28
+ // disable downstream spans
29
+ ctx = (0, core_1.suppressTracing)(ctx);
30
+ }
31
+ }
32
+ return {
33
+ span: new spanWrapper_js_1.OpenTelemetrySpanWrapper(span),
34
+ tracingContext: api_1.trace.setSpan(ctx, span),
35
+ };
36
+ }
37
+ withContext(tracingContext, callback, ...callbackArgs) {
38
+ return api_1.context.with(tracingContext, callback,
39
+ /** Assume caller will bind `this` or use arrow functions */ undefined, ...callbackArgs);
40
+ }
41
+ parseTraceparentHeader(traceparentHeader) {
42
+ return exports.propagator.extract(api_1.context.active(), { traceparent: traceparentHeader }, api_1.defaultTextMapGetter);
43
+ }
44
+ createRequestHeaders(tracingContext) {
45
+ const headers = {};
46
+ exports.propagator.inject(tracingContext || api_1.context.active(), headers, api_1.defaultTextMapSetter);
47
+ return headers;
48
+ }
49
+ }
50
+ exports.OpenTelemetryInstrumenter = OpenTelemetryInstrumenter;
51
+ //# sourceMappingURL=instrumenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumenter.js","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,4CAO4B;AAO5B,8CAAiF;AAEjF,qDAA4D;AAC5D,yDAAqD;AACrD,6DAAqD;AAErD,oGAAoG;AACvF,QAAA,UAAU,GAAG,IAAI,gCAAyB,EAAE,CAAC;AAE1D,MAAa,yBAAyB;IACpC,SAAS,CACP,IAAY,EACZ,WAAoC;QAEpC,IAAI,GAAG,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,KAAI,aAAO,CAAC,MAAM,EAAE,CAAC;QAC1D,IAAI,IAAU,CAAC;QAEf,IAAI,IAAA,kCAAe,EAAC,wBAAwB,CAAC,EAAE,CAAC;YAC9C,sDAAsD;YACtD,IAAI,GAAG,WAAK,CAAC,eAAe,CAAC,0BAAoB,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,IAAI,GAAG,WAAK;iBACT,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC;iBAC9D,SAAS,CAAC,IAAI,EAAE,IAAA,kCAAa,EAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YAEpD,IACE,IAAA,kCAAe,EAAC,sCAAsC,CAAC;gBACvD,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EACrC,CAAC;gBACD,2BAA2B;gBAC3B,GAAG,GAAG,IAAA,sBAAe,EAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI,yCAAwB,CAAC,IAAI,CAAC;YACxC,cAAc,EAAE,WAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;SACzC,CAAC;IACJ,CAAC;IACD,WAAW,CAIT,cAA8B,EAC9B,QAAkB,EAClB,GAAG,YAA0B;QAE7B,OAAO,aAAO,CAAC,IAAI,CACjB,cAAc,EACd,QAAQ;QACR,4DAA4D,CAAC,SAAS,EACtE,GAAG,YAAY,CAChB,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,iBAAyB;QAC9C,OAAO,kBAAU,CAAC,OAAO,CACvB,aAAO,CAAC,MAAM,EAAE,EAChB,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAClC,0BAAoB,CACrB,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,cAA+B;QAClD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,kBAAU,CAAC,MAAM,CAAC,cAAc,IAAI,aAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,0BAAoB,CAAC,CAAC;QACrF,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA5DD,8DA4DC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n INVALID_SPAN_CONTEXT,\n Span,\n context,\n defaultTextMapGetter,\n defaultTextMapSetter,\n trace,\n} from \"@opentelemetry/api\";\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"@azure/core-tracing\";\nimport { W3CTraceContextPropagator, suppressTracing } from \"@opentelemetry/core\";\n\nimport { OpenTelemetrySpanWrapper } from \"./spanWrapper.js\";\nimport { envVarToBoolean } from \"./configuration.js\";\nimport { toSpanOptions } from \"./transformations.js\";\n\n// While default propagation is user-configurable, Azure services always use the W3C implementation.\nexport const propagator = new W3CTraceContextPropagator();\n\nexport class OpenTelemetryInstrumenter implements Instrumenter {\n startSpan(\n name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } {\n let ctx = spanOptions?.tracingContext || context.active();\n let span: Span;\n\n if (envVarToBoolean(\"AZURE_TRACING_DISABLED\")) {\n // disable only our spans but not any downstream spans\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else {\n // Create our span\n span = trace\n .getTracer(spanOptions.packageName, spanOptions.packageVersion)\n .startSpan(name, toSpanOptions(spanOptions), ctx);\n\n if (\n envVarToBoolean(\"AZURE_HTTP_TRACING_CHILDREN_DISABLED\") &&\n name.toUpperCase().startsWith(\"HTTP\")\n ) {\n // disable downstream spans\n ctx = suppressTracing(ctx);\n }\n }\n\n return {\n span: new OpenTelemetrySpanWrapper(span),\n tracingContext: trace.setSpan(ctx, span),\n };\n }\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType<Callback>,\n >(\n tracingContext: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType<Callback> {\n return context.with(\n tracingContext,\n callback,\n /** Assume caller will bind `this` or use arrow functions */ undefined,\n ...callbackArgs,\n );\n }\n\n parseTraceparentHeader(traceparentHeader: string): TracingContext {\n return propagator.extract(\n context.active(),\n { traceparent: traceparentHeader },\n defaultTextMapGetter,\n );\n }\n\n createRequestHeaders(tracingContext?: TracingContext): Record<string, string> {\n const headers: Record<string, string> = {};\n propagator.inject(tracingContext || context.active(), headers, defaultTextMapSetter);\n return headers;\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The \@azure/logger configuration for this package.
3
+ */
4
+ export declare const logger: import("@azure/logger").AzureLogger;
5
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":"AAKA;;GAEG;AACH,eAAO,MAAM,MAAM,qCAAgE,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.logger = void 0;
6
+ const logger_1 = require("@azure/logger");
7
+ /**
8
+ * The \@azure/logger configuration for this package.
9
+ */
10
+ exports.logger = (0, logger_1.createClientLogger)("opentelemetry-instrumentation-azure-sdk");
11
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/logger.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,0CAAmD;AAEnD;;GAEG;AACU,QAAA,MAAM,GAAG,IAAA,2BAAkB,EAAC,yCAAyC,CAAC,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { createClientLogger } from \"@azure/logger\";\n\n/**\n * The \\@azure/logger configuration for this package.\n */\nexport const logger = createClientLogger(\"opentelemetry-instrumentation-azure-sdk\");\n"]}
@@ -0,0 +1,3 @@
1
+ {
2
+ "type": "commonjs"
3
+ }
@@ -0,0 +1,20 @@
1
+ import { Span } from "@opentelemetry/api";
2
+ import { SpanStatus, TracingSpan, AddEventOptions } from "@azure/core-tracing";
3
+ export declare class OpenTelemetrySpanWrapper implements TracingSpan {
4
+ private _span;
5
+ constructor(span: Span);
6
+ setStatus(status: SpanStatus): void;
7
+ setAttribute(name: string, value: unknown): void;
8
+ end(): void;
9
+ recordException(exception: string | Error): void;
10
+ isRecording(): boolean;
11
+ addEvent(name: string, options?: AddEventOptions): void;
12
+ /**
13
+ * Allows getting the wrapped span as needed.
14
+ * @internal
15
+ *
16
+ * @returns The underlying span
17
+ */
18
+ unwrap(): Span;
19
+ }
20
+ //# sourceMappingURL=spanWrapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spanWrapper.d.ts","sourceRoot":"","sources":["../../src/spanWrapper.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAkB,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG/E,qBAAa,wBAAyB,YAAW,WAAW;IAC1D,OAAO,CAAC,KAAK,CAAO;gBAER,IAAI,EAAE,IAAI;IAItB,SAAS,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAanC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAMhD,GAAG,IAAI,IAAI;IAIX,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,IAAI;IAIhD,WAAW,IAAI,OAAO;IAItB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,IAAI;IAI3D;;;;;OAKG;IACH,MAAM,IAAI,IAAI;CAGf"}
@@ -0,0 +1,54 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.OpenTelemetrySpanWrapper = void 0;
6
+ const api_1 = require("@opentelemetry/api");
7
+ const core_1 = require("@opentelemetry/core");
8
+ class OpenTelemetrySpanWrapper {
9
+ constructor(span) {
10
+ this._span = span;
11
+ }
12
+ setStatus(status) {
13
+ if (status.status === "error") {
14
+ if (status.error) {
15
+ this._span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: status.error.toString() });
16
+ this.recordException(status.error);
17
+ }
18
+ else {
19
+ this._span.setStatus({ code: api_1.SpanStatusCode.ERROR });
20
+ }
21
+ }
22
+ else if (status.status === "success") {
23
+ this._span.setStatus({ code: api_1.SpanStatusCode.OK });
24
+ }
25
+ }
26
+ setAttribute(name, value) {
27
+ if (value !== null && value !== undefined && (0, core_1.isAttributeValue)(value)) {
28
+ this._span.setAttribute(name, value);
29
+ }
30
+ }
31
+ end() {
32
+ this._span.end();
33
+ }
34
+ recordException(exception) {
35
+ this._span.recordException(exception);
36
+ }
37
+ isRecording() {
38
+ return this._span.isRecording();
39
+ }
40
+ addEvent(name, options = {}) {
41
+ this._span.addEvent(name, (0, core_1.sanitizeAttributes)(options.attributes), options.startTime);
42
+ }
43
+ /**
44
+ * Allows getting the wrapped span as needed.
45
+ * @internal
46
+ *
47
+ * @returns The underlying span
48
+ */
49
+ unwrap() {
50
+ return this._span;
51
+ }
52
+ }
53
+ exports.OpenTelemetrySpanWrapper = OpenTelemetrySpanWrapper;
54
+ //# sourceMappingURL=spanWrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spanWrapper.js","sourceRoot":"","sources":["../../src/spanWrapper.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;;AAElC,4CAA0D;AAE1D,8CAA2E;AAE3E,MAAa,wBAAwB;IAGnC,YAAY,IAAU;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,MAAkB;QAC1B,IAAI,MAAM,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC9B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACjB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;gBACvF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrC,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,KAAK,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;aAAM,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,oBAAc,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,KAAc;QACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,IAAA,uBAAgB,EAAC,KAAK,CAAC,EAAE,CAAC;YACrE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,GAAG;QACD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;IACnB,CAAC;IAED,eAAe,CAAC,SAAyB;QACvC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAClC,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,UAA2B,EAAE;QAClD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAA,yBAAkB,EAAC,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IACvF,CAAC;IAED;;;;;OAKG;IACH,MAAM;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;CACF;AAnDD,4DAmDC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { Span, SpanStatusCode } from \"@opentelemetry/api\";\nimport { SpanStatus, TracingSpan, AddEventOptions } from \"@azure/core-tracing\";\nimport { isAttributeValue, sanitizeAttributes } from \"@opentelemetry/core\";\n\nexport class OpenTelemetrySpanWrapper implements TracingSpan {\n private _span: Span;\n\n constructor(span: Span) {\n this._span = span;\n }\n\n setStatus(status: SpanStatus): void {\n if (status.status === \"error\") {\n if (status.error) {\n this._span.setStatus({ code: SpanStatusCode.ERROR, message: status.error.toString() });\n this.recordException(status.error);\n } else {\n this._span.setStatus({ code: SpanStatusCode.ERROR });\n }\n } else if (status.status === \"success\") {\n this._span.setStatus({ code: SpanStatusCode.OK });\n }\n }\n\n setAttribute(name: string, value: unknown): void {\n if (value !== null && value !== undefined && isAttributeValue(value)) {\n this._span.setAttribute(name, value);\n }\n }\n\n end(): void {\n this._span.end();\n }\n\n recordException(exception: string | Error): void {\n this._span.recordException(exception);\n }\n\n isRecording(): boolean {\n return this._span.isRecording();\n }\n\n addEvent(name: string, options: AddEventOptions = {}): void {\n this._span.addEvent(name, sanitizeAttributes(options.attributes), options.startTime);\n }\n\n /**\n * Allows getting the wrapped span as needed.\n * @internal\n *\n * @returns The underlying span\n */\n unwrap(): Span {\n return this._span;\n }\n}\n"]}
@@ -0,0 +1,29 @@
1
+ import { InstrumenterSpanOptions, TracingSpanKind } from "@azure/core-tracing";
2
+ import { SpanKind, SpanOptions } from "@opentelemetry/api";
3
+ /**
4
+ * Converts our TracingSpanKind to the corresponding OpenTelemetry SpanKind.
5
+ *
6
+ * By default it will return {@link SpanKind.INTERNAL}
7
+ * @param tracingSpanKind - The core tracing {@link TracingSpanKind}
8
+ * @returns - The OpenTelemetry {@link SpanKind}
9
+ */
10
+ export declare function toOpenTelemetrySpanKind<K extends TracingSpanKind>(tracingSpanKind?: K): SpanKindMapping[K];
11
+ /**
12
+ * A mapping between our {@link TracingSpanKind} union type and OpenTelemetry's {@link SpanKind}.
13
+ */
14
+ type SpanKindMapping = {
15
+ client: SpanKind.CLIENT;
16
+ server: SpanKind.SERVER;
17
+ producer: SpanKind.PRODUCER;
18
+ consumer: SpanKind.CONSUMER;
19
+ internal: SpanKind.INTERNAL;
20
+ };
21
+ /**
22
+ * Converts core-tracing span options to OpenTelemetry options.
23
+ *
24
+ * @param spanOptions - The {@link InstrumenterSpanOptions} to convert.
25
+ * @returns An OpenTelemetry {@link SpanOptions} that can be used when creating a span.
26
+ */
27
+ export declare function toSpanOptions(spanOptions?: InstrumenterSpanOptions): SpanOptions;
28
+ export {};
29
+ //# sourceMappingURL=transformations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformations.d.ts","sourceRoot":"","sources":["../../src/transformations.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,uBAAuB,EAAE,eAAe,EAAmB,MAAM,qBAAqB,CAAC;AAChG,OAAO,EAAQ,QAAQ,EAAE,WAAW,EAAS,MAAM,oBAAoB,CAAC;AAGxE;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,SAAS,eAAe,EAC/D,eAAe,CAAC,EAAE,CAAC,GAClB,eAAe,CAAC,CAAC,CAAC,CAGpB;AAED;;GAEG;AACH,KAAK,eAAe,GAAG;IACrB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC;IACxB,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;IAC5B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC;CAC7B,CAAC;AAqBF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,CAAC,EAAE,uBAAuB,GAAG,WAAW,CAYhF"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ // Copyright (c) Microsoft Corporation.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.toOpenTelemetrySpanKind = toOpenTelemetrySpanKind;
6
+ exports.toSpanOptions = toSpanOptions;
7
+ const api_1 = require("@opentelemetry/api");
8
+ const core_1 = require("@opentelemetry/core");
9
+ /**
10
+ * Converts our TracingSpanKind to the corresponding OpenTelemetry SpanKind.
11
+ *
12
+ * By default it will return {@link SpanKind.INTERNAL}
13
+ * @param tracingSpanKind - The core tracing {@link TracingSpanKind}
14
+ * @returns - The OpenTelemetry {@link SpanKind}
15
+ */
16
+ function toOpenTelemetrySpanKind(tracingSpanKind) {
17
+ const key = (tracingSpanKind || "internal").toUpperCase();
18
+ return api_1.SpanKind[key];
19
+ }
20
+ /**
21
+ * Converts core-tracing's TracingSpanLink to OpenTelemetry's Link
22
+ *
23
+ * @param spanLinks - The core tracing {@link TracingSpanLink} to convert
24
+ * @returns A set of {@link Link}s
25
+ */
26
+ function toOpenTelemetryLinks(spanLinks = []) {
27
+ return spanLinks.reduce((acc, tracingSpanLink) => {
28
+ const spanContext = api_1.trace.getSpanContext(tracingSpanLink.tracingContext);
29
+ if (spanContext) {
30
+ acc.push({
31
+ context: spanContext,
32
+ attributes: (0, core_1.sanitizeAttributes)(tracingSpanLink.attributes),
33
+ });
34
+ }
35
+ return acc;
36
+ }, []);
37
+ }
38
+ /**
39
+ * Converts core-tracing span options to OpenTelemetry options.
40
+ *
41
+ * @param spanOptions - The {@link InstrumenterSpanOptions} to convert.
42
+ * @returns An OpenTelemetry {@link SpanOptions} that can be used when creating a span.
43
+ */
44
+ function toSpanOptions(spanOptions) {
45
+ const { spanAttributes, spanLinks, spanKind } = spanOptions || {};
46
+ const attributes = (0, core_1.sanitizeAttributes)(spanAttributes);
47
+ const kind = toOpenTelemetrySpanKind(spanKind);
48
+ const links = toOpenTelemetryLinks(spanLinks);
49
+ return {
50
+ attributes,
51
+ kind,
52
+ links,
53
+ };
54
+ }
55
+ //# sourceMappingURL=transformations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transformations.js","sourceRoot":"","sources":["../../src/transformations.ts"],"names":[],"mappings":";AAAA,uCAAuC;AACvC,kCAAkC;;AAalC,0DAKC;AAsCD,sCAYC;AAjED,4CAAwE;AACxE,8CAAyD;AAEzD;;;;;;GAMG;AACH,SAAgB,uBAAuB,CACrC,eAAmB;IAEnB,MAAM,GAAG,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC,CAAC,WAAW,EAA2B,CAAC;IACnF,OAAO,cAAQ,CAAC,GAAG,CAAuB,CAAC;AAC7C,CAAC;AAaD;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,YAA+B,EAAE;IAC7D,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,eAAe,EAAE,EAAE;QAC/C,MAAM,WAAW,GAAG,WAAK,CAAC,cAAc,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;QACzE,IAAI,WAAW,EAAE,CAAC;YAChB,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,WAAW;gBACpB,UAAU,EAAE,IAAA,yBAAkB,EAAC,eAAe,CAAC,UAAU,CAAC;aAC3D,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC,EAAE,EAAY,CAAC,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAgB,aAAa,CAAC,WAAqC;IACjE,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,WAAW,IAAI,EAAE,CAAC;IAElE,MAAM,UAAU,GAAG,IAAA,yBAAkB,EAAC,cAAc,CAAC,CAAC;IACtD,MAAM,IAAI,GAAG,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAE9C,OAAO;QACL,UAAU;QACV,IAAI;QACJ,KAAK;KACN,CAAC;AACJ,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { InstrumenterSpanOptions, TracingSpanKind, TracingSpanLink } from \"@azure/core-tracing\";\nimport { Link, SpanKind, SpanOptions, trace } from \"@opentelemetry/api\";\nimport { sanitizeAttributes } from \"@opentelemetry/core\";\n\n/**\n * Converts our TracingSpanKind to the corresponding OpenTelemetry SpanKind.\n *\n * By default it will return {@link SpanKind.INTERNAL}\n * @param tracingSpanKind - The core tracing {@link TracingSpanKind}\n * @returns - The OpenTelemetry {@link SpanKind}\n */\nexport function toOpenTelemetrySpanKind<K extends TracingSpanKind>(\n tracingSpanKind?: K,\n): SpanKindMapping[K] {\n const key = (tracingSpanKind || \"internal\").toUpperCase() as keyof typeof SpanKind;\n return SpanKind[key] as SpanKindMapping[K];\n}\n\n/**\n * A mapping between our {@link TracingSpanKind} union type and OpenTelemetry's {@link SpanKind}.\n */\ntype SpanKindMapping = {\n client: SpanKind.CLIENT;\n server: SpanKind.SERVER;\n producer: SpanKind.PRODUCER;\n consumer: SpanKind.CONSUMER;\n internal: SpanKind.INTERNAL;\n};\n\n/**\n * Converts core-tracing's TracingSpanLink to OpenTelemetry's Link\n *\n * @param spanLinks - The core tracing {@link TracingSpanLink} to convert\n * @returns A set of {@link Link}s\n */\nfunction toOpenTelemetryLinks(spanLinks: TracingSpanLink[] = []): Link[] {\n return spanLinks.reduce((acc, tracingSpanLink) => {\n const spanContext = trace.getSpanContext(tracingSpanLink.tracingContext);\n if (spanContext) {\n acc.push({\n context: spanContext,\n attributes: sanitizeAttributes(tracingSpanLink.attributes),\n });\n }\n return acc;\n }, [] as Link[]);\n}\n\n/**\n * Converts core-tracing span options to OpenTelemetry options.\n *\n * @param spanOptions - The {@link InstrumenterSpanOptions} to convert.\n * @returns An OpenTelemetry {@link SpanOptions} that can be used when creating a span.\n */\nexport function toSpanOptions(spanOptions?: InstrumenterSpanOptions): SpanOptions {\n const { spanAttributes, spanLinks, spanKind } = spanOptions || {};\n\n const attributes = sanitizeAttributes(spanAttributes);\n const kind = toOpenTelemetrySpanKind(spanKind);\n const links = toOpenTelemetryLinks(spanLinks);\n\n return {\n attributes,\n kind,\n links,\n };\n}\n"]}
@@ -5,7 +5,7 @@
5
5
  "toolPackages": [
6
6
  {
7
7
  "packageName": "@microsoft/api-extractor",
8
- "packageVersion": "7.36.4"
8
+ "packageVersion": "7.47.9"
9
9
  }
10
10
  ]
11
11
  }
@@ -0,0 +1,21 @@
1
+ export declare const SDK_VERSION: string;
2
+ /**
3
+ * @internal
4
+ *
5
+ * Keys of known environment variables we look up.
6
+ */
7
+ export type KnownEnvironmentKey = "AZURE_HTTP_TRACING_CHILDREN_DISABLED" | "AZURE_TRACING_DISABLED";
8
+ /**
9
+ * @internal
10
+ *
11
+ * Cached values of environment variables that were fetched.
12
+ */
13
+ export declare const environmentCache: Map<KnownEnvironmentKey, string | undefined>;
14
+ /**
15
+ * Converts an environment variable to Boolean.
16
+ * the strings "false" and "0" are treated as falsy values.
17
+ *
18
+ * @internal
19
+ */
20
+ export declare function envVarToBoolean(key: KnownEnvironmentKey): boolean;
21
+ //# sourceMappingURL=configuration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.d.ts","sourceRoot":"","sources":["../../src/configuration.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,EAAE,MAAuB,CAAC;AAElD;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,sCAAsC,GAAG,wBAAwB,CAAC;AAEpG;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,8CAAqD,CAAC;AAEnF;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,CAMjE"}
@@ -0,0 +1,31 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ export const SDK_VERSION = "1.0.0-beta.7";
4
+ /**
5
+ * @internal
6
+ *
7
+ * Cached values of environment variables that were fetched.
8
+ */
9
+ export const environmentCache = new Map();
10
+ /**
11
+ * Converts an environment variable to Boolean.
12
+ * the strings "false" and "0" are treated as falsy values.
13
+ *
14
+ * @internal
15
+ */
16
+ export function envVarToBoolean(key) {
17
+ var _a;
18
+ if (!environmentCache.has(key)) {
19
+ loadEnvironmentVariable(key);
20
+ }
21
+ const value = ((_a = environmentCache.get(key)) !== null && _a !== void 0 ? _a : "").toLowerCase();
22
+ return value !== "false" && value !== "0" && Boolean(value);
23
+ }
24
+ function loadEnvironmentVariable(key) {
25
+ var _a;
26
+ if (typeof process !== "undefined" && process.env) {
27
+ const rawValue = (_a = process.env[key]) !== null && _a !== void 0 ? _a : process.env[key.toLowerCase()];
28
+ environmentCache.set(key, rawValue);
29
+ }
30
+ }
31
+ //# sourceMappingURL=configuration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configuration.js","sourceRoot":"","sources":["../../src/configuration.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,MAAM,CAAC,MAAM,WAAW,GAAW,cAAc,CAAC;AASlD;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA2C,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,GAAwB;;IACtD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IACD,MAAM,KAAK,GAAG,CAAC,MAAA,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IAC9D,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAwB;;IACvD,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACpE,gBAAgB,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;AACH,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport const SDK_VERSION: string = \"1.0.0-beta.7\";\n\n/**\n * @internal\n *\n * Keys of known environment variables we look up.\n */\nexport type KnownEnvironmentKey = \"AZURE_HTTP_TRACING_CHILDREN_DISABLED\" | \"AZURE_TRACING_DISABLED\";\n\n/**\n * @internal\n *\n * Cached values of environment variables that were fetched.\n */\nexport const environmentCache = new Map<KnownEnvironmentKey, string | undefined>();\n\n/**\n * Converts an environment variable to Boolean.\n * the strings \"false\" and \"0\" are treated as falsy values.\n *\n * @internal\n */\nexport function envVarToBoolean(key: KnownEnvironmentKey): boolean {\n if (!environmentCache.has(key)) {\n loadEnvironmentVariable(key);\n }\n const value = (environmentCache.get(key) ?? \"\").toLowerCase();\n return value !== \"false\" && value !== \"0\" && Boolean(value);\n}\n\nfunction loadEnvironmentVariable(key: KnownEnvironmentKey): void {\n if (typeof process !== \"undefined\" && process.env) {\n const rawValue = process.env[key] ?? process.env[key.toLowerCase()];\n environmentCache.set(key, rawValue);\n }\n}\n"]}
@@ -0,0 +1,3 @@
1
+ export * from "./logger.js";
2
+ export * from "./instrumentation.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAGA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ export * from "./logger.js";
4
+ export * from "./instrumentation.js";
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nexport * from \"./logger.js\";\nexport * from \"./instrumentation.js\";\n"]}
@@ -0,0 +1,39 @@
1
+ import { Instrumentation, InstrumentationBase, InstrumentationConfig, InstrumentationModuleDefinition } from "@opentelemetry/instrumentation";
2
+ /**
3
+ * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.
4
+ */
5
+ export interface AzureSdkInstrumentationOptions extends InstrumentationConfig {
6
+ }
7
+ /**
8
+ * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.
9
+ */
10
+ export declare class AzureSdkInstrumentation extends InstrumentationBase {
11
+ constructor(options?: AzureSdkInstrumentationOptions);
12
+ /**
13
+ * Entrypoint for the module registration.
14
+ *
15
+ * @returns The patched \@azure/core-tracing module after setting its instrumenter.
16
+ */
17
+ protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[];
18
+ }
19
+ /**
20
+ * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.
21
+ *
22
+ * When registered, any Azure data plane package will begin emitting tracing spans for internal calls
23
+ * as well as network calls
24
+ *
25
+ * Example usage:
26
+ * ```ts
27
+ * const openTelemetryInstrumentation = require("@opentelemetry/instrumentation");
28
+ * openTelemetryInstrumentation.registerInstrumentations({
29
+ * instrumentations: [createAzureSdkInstrumentation()],
30
+ * })
31
+ * ```
32
+ *
33
+ * @remarks
34
+ *
35
+ * As OpenTelemetry instrumentations rely on patching required modules, you should register
36
+ * this instrumentation as early as possible and before loading any Azure Client Libraries.
37
+ */
38
+ export declare function createAzureSdkInstrumentation(options?: AzureSdkInstrumentationOptions): Instrumentation;
39
+ //# sourceMappingURL=instrumentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,qBAAqB,EACrB,+BAA+B,EAEhC,MAAM,gCAAgC,CAAC;AAKxC;;GAEG;AACH,MAAM,WAAW,8BAA+B,SAAQ,qBAAqB;CAAG;AAEhF;;GAEG;AACH,qBAAa,uBAAwB,SAAQ,mBAAmB;gBAClD,OAAO,GAAE,8BAAmC;IAOxD;;;;OAIG;IACH,SAAS,CAAC,IAAI,IAAI,IAAI,GAAG,+BAA+B,GAAG,+BAA+B,EAAE;CAgB7F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,6BAA6B,CAC3C,OAAO,GAAE,8BAAmC,GAC3C,eAAe,CAEjB"}
@@ -1,12 +1,12 @@
1
1
  // Copyright (c) Microsoft Corporation.
2
- // Licensed under the MIT license.
2
+ // Licensed under the MIT License.
3
3
  import { InstrumentationBase, InstrumentationNodeModuleDefinition, } from "@opentelemetry/instrumentation";
4
- import { OpenTelemetryInstrumenter } from "./instrumenter";
5
- import { SDK_VERSION } from "./configuration";
4
+ import { OpenTelemetryInstrumenter } from "./instrumenter.js";
5
+ import { SDK_VERSION } from "./configuration.js";
6
6
  /**
7
7
  * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.
8
8
  */
9
- class AzureSdkInstrumentation extends InstrumentationBase {
9
+ export class AzureSdkInstrumentation extends InstrumentationBase {
10
10
  constructor(options = {}) {
11
11
  super("@azure/opentelemetry-instrumentation-azure-sdk", SDK_VERSION, Object.assign({}, options));
12
12
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EAEL,mBAAmB,EAGnB,mCAAmC,GACpC,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOjD;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,mBAAmB;IAC9D,YAAY,UAA0C,EAAE;QACtD,KAAK,CACH,gDAAgD,EAChD,WAAW,EACX,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,CAC3B,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACO,IAAI;QACZ,MAAM,MAAM,GAAoC,IAAI,mCAAmC,CACrF,qBAAqB,EACrB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,EAC/B,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,OAAO,aAAa,CAAC,eAAe,KAAK,UAAU,EAAE,CAAC;gBACxD,aAAa,CAAC,eAAe,CAAC,IAAI,yBAAyB,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC,CACF,CAAC;QACF,qCAAqC;QACrC,MAAM,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAA0C,EAAE;IAE5C,OAAO,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAC9C,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n Instrumentation,\n InstrumentationBase,\n InstrumentationConfig,\n InstrumentationModuleDefinition,\n InstrumentationNodeModuleDefinition,\n} from \"@opentelemetry/instrumentation\";\n\nimport { OpenTelemetryInstrumenter } from \"./instrumenter.js\";\nimport { SDK_VERSION } from \"./configuration.js\";\n\n/**\n * Configuration options that can be passed to {@link createAzureSdkInstrumentation} function.\n */\nexport interface AzureSdkInstrumentationOptions extends InstrumentationConfig {}\n\n/**\n * The instrumentation module for the Azure SDK. Implements OpenTelemetry's {@link Instrumentation}.\n */\nexport class AzureSdkInstrumentation extends InstrumentationBase {\n constructor(options: AzureSdkInstrumentationOptions = {}) {\n super(\n \"@azure/opentelemetry-instrumentation-azure-sdk\",\n SDK_VERSION,\n Object.assign({}, options),\n );\n }\n /**\n * Entrypoint for the module registration.\n *\n * @returns The patched \\@azure/core-tracing module after setting its instrumenter.\n */\n protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[] {\n const result: InstrumentationModuleDefinition = new InstrumentationNodeModuleDefinition(\n \"@azure/core-tracing\",\n [\"^1.0.0-preview.14\", \"^1.0.0\"],\n (moduleExports) => {\n if (typeof moduleExports.useInstrumenter === \"function\") {\n moduleExports.useInstrumenter(new OpenTelemetryInstrumenter());\n }\n\n return moduleExports;\n },\n );\n // Needed to support 1.0.0-preview.14\n result.includePrerelease = true;\n return result;\n }\n}\n\n/**\n * Enables Azure SDK Instrumentation using OpenTelemetry for Azure SDK client libraries.\n *\n * When registered, any Azure data plane package will begin emitting tracing spans for internal calls\n * as well as network calls\n *\n * Example usage:\n * ```ts\n * const openTelemetryInstrumentation = require(\"@opentelemetry/instrumentation\");\n * openTelemetryInstrumentation.registerInstrumentations({\n * instrumentations: [createAzureSdkInstrumentation()],\n * })\n * ```\n *\n * @remarks\n *\n * As OpenTelemetry instrumentations rely on patching required modules, you should register\n * this instrumentation as early as possible and before loading any Azure Client Libraries.\n */\nexport function createAzureSdkInstrumentation(\n options: AzureSdkInstrumentationOptions = {},\n): Instrumentation {\n return new AzureSdkInstrumentation(options);\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { Instrumenter, InstrumenterSpanOptions, TracingContext, TracingSpan } from "@azure/core-tracing";
2
+ import { W3CTraceContextPropagator } from "@opentelemetry/core";
3
+ export declare const propagator: W3CTraceContextPropagator;
4
+ export declare class OpenTelemetryInstrumenter implements Instrumenter {
5
+ startSpan(name: string, spanOptions: InstrumenterSpanOptions): {
6
+ span: TracingSpan;
7
+ tracingContext: TracingContext;
8
+ };
9
+ withContext<CallbackArgs extends unknown[], Callback extends (...args: CallbackArgs) => ReturnType<Callback>>(tracingContext: TracingContext, callback: Callback, ...callbackArgs: CallbackArgs): ReturnType<Callback>;
10
+ parseTraceparentHeader(traceparentHeader: string): TracingContext;
11
+ createRequestHeaders(tracingContext?: TracingContext): Record<string, string>;
12
+ }
13
+ //# sourceMappingURL=instrumenter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumenter.d.ts","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAWA,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,cAAc,EACd,WAAW,EACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,yBAAyB,EAAmB,MAAM,qBAAqB,CAAC;AAOjF,eAAO,MAAM,UAAU,2BAAkC,CAAC;AAE1D,qBAAa,yBAA0B,YAAW,YAAY;IAC5D,SAAS,CACP,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,uBAAuB,GACnC;QAAE,IAAI,EAAE,WAAW,CAAC;QAAC,cAAc,EAAE,cAAc,CAAA;KAAE;IA2BxD,WAAW,CACT,YAAY,SAAS,OAAO,EAAE,EAC9B,QAAQ,SAAS,CAAC,GAAG,IAAI,EAAE,YAAY,KAAK,UAAU,CAAC,QAAQ,CAAC,EAEhE,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,QAAQ,EAClB,GAAG,YAAY,EAAE,YAAY,GAC5B,UAAU,CAAC,QAAQ,CAAC;IASvB,sBAAsB,CAAC,iBAAiB,EAAE,MAAM,GAAG,cAAc;IAQjE,oBAAoB,CAAC,cAAc,CAAC,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAK9E"}
@@ -0,0 +1,47 @@
1
+ // Copyright (c) Microsoft Corporation.
2
+ // Licensed under the MIT License.
3
+ import { INVALID_SPAN_CONTEXT, context, defaultTextMapGetter, defaultTextMapSetter, trace, } from "@opentelemetry/api";
4
+ import { W3CTraceContextPropagator, suppressTracing } from "@opentelemetry/core";
5
+ import { OpenTelemetrySpanWrapper } from "./spanWrapper.js";
6
+ import { envVarToBoolean } from "./configuration.js";
7
+ import { toSpanOptions } from "./transformations.js";
8
+ // While default propagation is user-configurable, Azure services always use the W3C implementation.
9
+ export const propagator = new W3CTraceContextPropagator();
10
+ export class OpenTelemetryInstrumenter {
11
+ startSpan(name, spanOptions) {
12
+ let ctx = (spanOptions === null || spanOptions === void 0 ? void 0 : spanOptions.tracingContext) || context.active();
13
+ let span;
14
+ if (envVarToBoolean("AZURE_TRACING_DISABLED")) {
15
+ // disable only our spans but not any downstream spans
16
+ span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);
17
+ }
18
+ else {
19
+ // Create our span
20
+ span = trace
21
+ .getTracer(spanOptions.packageName, spanOptions.packageVersion)
22
+ .startSpan(name, toSpanOptions(spanOptions), ctx);
23
+ if (envVarToBoolean("AZURE_HTTP_TRACING_CHILDREN_DISABLED") &&
24
+ name.toUpperCase().startsWith("HTTP")) {
25
+ // disable downstream spans
26
+ ctx = suppressTracing(ctx);
27
+ }
28
+ }
29
+ return {
30
+ span: new OpenTelemetrySpanWrapper(span),
31
+ tracingContext: trace.setSpan(ctx, span),
32
+ };
33
+ }
34
+ withContext(tracingContext, callback, ...callbackArgs) {
35
+ return context.with(tracingContext, callback,
36
+ /** Assume caller will bind `this` or use arrow functions */ undefined, ...callbackArgs);
37
+ }
38
+ parseTraceparentHeader(traceparentHeader) {
39
+ return propagator.extract(context.active(), { traceparent: traceparentHeader }, defaultTextMapGetter);
40
+ }
41
+ createRequestHeaders(tracingContext) {
42
+ const headers = {};
43
+ propagator.inject(tracingContext || context.active(), headers, defaultTextMapSetter);
44
+ return headers;
45
+ }
46
+ }
47
+ //# sourceMappingURL=instrumenter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumenter.js","sourceRoot":"","sources":["../../src/instrumenter.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,kCAAkC;AAElC,OAAO,EACL,oBAAoB,EAEpB,OAAO,EACP,oBAAoB,EACpB,oBAAoB,EACpB,KAAK,GACN,MAAM,oBAAoB,CAAC;AAO5B,OAAO,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,oGAAoG;AACpG,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,yBAAyB,EAAE,CAAC;AAE1D,MAAM,OAAO,yBAAyB;IACpC,SAAS,CACP,IAAY,EACZ,WAAoC;QAEpC,IAAI,GAAG,GAAG,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,cAAc,KAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QAC1D,IAAI,IAAU,CAAC;QAEf,IAAI,eAAe,CAAC,wBAAwB,CAAC,EAAE,CAAC;YAC9C,sDAAsD;YACtD,IAAI,GAAG,KAAK,CAAC,eAAe,CAAC,oBAAoB,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,IAAI,GAAG,KAAK;iBACT,SAAS,CAAC,WAAW,CAAC,WAAW,EAAE,WAAW,CAAC,cAAc,CAAC;iBAC9D,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC,CAAC;YAEpD,IACE,eAAe,CAAC,sCAAsC,CAAC;gBACvD,IAAI,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EACrC,CAAC;gBACD,2BAA2B;gBAC3B,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,OAAO;YACL,IAAI,EAAE,IAAI,wBAAwB,CAAC,IAAI,CAAC;YACxC,cAAc,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC;SACzC,CAAC;IACJ,CAAC;IACD,WAAW,CAIT,cAA8B,EAC9B,QAAkB,EAClB,GAAG,YAA0B;QAE7B,OAAO,OAAO,CAAC,IAAI,CACjB,cAAc,EACd,QAAQ;QACR,4DAA4D,CAAC,SAAS,EACtE,GAAG,YAAY,CAChB,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,iBAAyB;QAC9C,OAAO,UAAU,CAAC,OAAO,CACvB,OAAO,CAAC,MAAM,EAAE,EAChB,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAClC,oBAAoB,CACrB,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,cAA+B;QAClD,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,UAAU,CAAC,MAAM,CAAC,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,oBAAoB,CAAC,CAAC;QACrF,OAAO,OAAO,CAAC;IACjB,CAAC;CACF","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport {\n INVALID_SPAN_CONTEXT,\n Span,\n context,\n defaultTextMapGetter,\n defaultTextMapSetter,\n trace,\n} from \"@opentelemetry/api\";\nimport {\n Instrumenter,\n InstrumenterSpanOptions,\n TracingContext,\n TracingSpan,\n} from \"@azure/core-tracing\";\nimport { W3CTraceContextPropagator, suppressTracing } from \"@opentelemetry/core\";\n\nimport { OpenTelemetrySpanWrapper } from \"./spanWrapper.js\";\nimport { envVarToBoolean } from \"./configuration.js\";\nimport { toSpanOptions } from \"./transformations.js\";\n\n// While default propagation is user-configurable, Azure services always use the W3C implementation.\nexport const propagator = new W3CTraceContextPropagator();\n\nexport class OpenTelemetryInstrumenter implements Instrumenter {\n startSpan(\n name: string,\n spanOptions: InstrumenterSpanOptions,\n ): { span: TracingSpan; tracingContext: TracingContext } {\n let ctx = spanOptions?.tracingContext || context.active();\n let span: Span;\n\n if (envVarToBoolean(\"AZURE_TRACING_DISABLED\")) {\n // disable only our spans but not any downstream spans\n span = trace.wrapSpanContext(INVALID_SPAN_CONTEXT);\n } else {\n // Create our span\n span = trace\n .getTracer(spanOptions.packageName, spanOptions.packageVersion)\n .startSpan(name, toSpanOptions(spanOptions), ctx);\n\n if (\n envVarToBoolean(\"AZURE_HTTP_TRACING_CHILDREN_DISABLED\") &&\n name.toUpperCase().startsWith(\"HTTP\")\n ) {\n // disable downstream spans\n ctx = suppressTracing(ctx);\n }\n }\n\n return {\n span: new OpenTelemetrySpanWrapper(span),\n tracingContext: trace.setSpan(ctx, span),\n };\n }\n withContext<\n CallbackArgs extends unknown[],\n Callback extends (...args: CallbackArgs) => ReturnType<Callback>,\n >(\n tracingContext: TracingContext,\n callback: Callback,\n ...callbackArgs: CallbackArgs\n ): ReturnType<Callback> {\n return context.with(\n tracingContext,\n callback,\n /** Assume caller will bind `this` or use arrow functions */ undefined,\n ...callbackArgs,\n );\n }\n\n parseTraceparentHeader(traceparentHeader: string): TracingContext {\n return propagator.extract(\n context.active(),\n { traceparent: traceparentHeader },\n defaultTextMapGetter,\n );\n }\n\n createRequestHeaders(tracingContext?: TracingContext): Record<string, string> {\n const headers: Record<string, string> = {};\n propagator.inject(tracingContext || context.active(), headers, defaultTextMapSetter);\n return headers;\n }\n}\n"]}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * The \@azure/logger configuration for this package.
3
+ */
4
+ export declare const logger: import("@azure/logger").AzureLogger;
5
+ //# sourceMappingURL=logger.d.ts.map