@opentelemetry/instrumentation-xml-http-request 0.25.1-alpha.7 → 0.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +0 -6
  2. package/build/esm/enums/AttributeNames.js.map +1 -1
  3. package/build/esm/enums/EventNames.js.map +1 -1
  4. package/build/esm/index.js.map +1 -1
  5. package/build/esm/types.d.ts +1 -1
  6. package/build/esm/types.js.map +1 -1
  7. package/build/esm/version.d.ts +1 -1
  8. package/build/esm/version.js +1 -1
  9. package/build/esm/version.js.map +1 -1
  10. package/build/esm/xhr.d.ts +10 -2
  11. package/build/esm/xhr.js +15 -11
  12. package/build/esm/xhr.js.map +1 -1
  13. package/build/esnext/enums/AttributeNames.d.ts +7 -0
  14. package/build/esnext/enums/AttributeNames.js +23 -0
  15. package/build/esnext/enums/AttributeNames.js.map +1 -0
  16. package/build/esnext/enums/EventNames.d.ts +9 -0
  17. package/build/esnext/enums/EventNames.js +25 -0
  18. package/build/esnext/enums/EventNames.js.map +1 -0
  19. package/build/esnext/index.d.ts +2 -0
  20. package/build/esnext/index.js +17 -0
  21. package/build/esnext/index.js.map +1 -0
  22. package/build/esnext/types.d.ts +29 -0
  23. package/build/esnext/types.js +17 -0
  24. package/build/esnext/types.js.map +1 -0
  25. package/build/esnext/version.d.ts +2 -0
  26. package/build/esnext/version.js +18 -0
  27. package/build/esnext/version.js.map +1 -0
  28. package/build/esnext/xhr.d.ts +126 -0
  29. package/build/esnext/xhr.js +392 -0
  30. package/build/esnext/xhr.js.map +1 -0
  31. package/build/src/enums/AttributeNames.js.map +1 -1
  32. package/build/src/enums/EventNames.js.map +1 -1
  33. package/build/src/index.js.map +1 -1
  34. package/build/src/types.d.ts +1 -1
  35. package/build/src/types.js.map +1 -1
  36. package/build/src/version.d.ts +1 -1
  37. package/build/src/version.js +1 -1
  38. package/build/src/version.js.map +1 -1
  39. package/build/src/xhr.d.ts +10 -2
  40. package/build/src/xhr.js +24 -19
  41. package/build/src/xhr.js.map +1 -1
  42. package/package.json +34 -26
package/build/src/xhr.js CHANGED
@@ -24,6 +24,11 @@ const sdk_trace_web_1 = require("@opentelemetry/sdk-trace-web");
24
24
  const EventNames_1 = require("./enums/EventNames");
25
25
  const version_1 = require("./version");
26
26
  const AttributeNames_1 = require("./enums/AttributeNames");
27
+ function parseUrl(url) {
28
+ const element = document.createElement('a');
29
+ element.href = url;
30
+ return element;
31
+ }
27
32
  // how long to wait for observer to collect information about resources
28
33
  // this is needed as event "load" is called before observer
29
34
  // hard to say how long it should really wait, seems like 300ms is
@@ -33,8 +38,8 @@ const OBSERVER_WAIT_TIME_MS = 300;
33
38
  * This class represents a XMLHttpRequest plugin for auto instrumentation
34
39
  */
35
40
  class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBase {
36
- constructor(config = {}) {
37
- super('@opentelemetry/instrumentation-xml-http-request', version_1.VERSION, Object.assign({}, config));
41
+ constructor(config) {
42
+ super('@opentelemetry/instrumentation-xml-http-request', version_1.VERSION, config);
38
43
  this.component = 'xml-http-request';
39
44
  this.version = version_1.VERSION;
40
45
  this.moduleName = this.component;
@@ -49,11 +54,12 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
49
54
  /**
50
55
  * Adds custom headers to XMLHttpRequest
51
56
  * @param xhr
52
- * @param span
57
+ * @param spanUrl
53
58
  * @private
54
59
  */
55
60
  _addHeaders(xhr, spanUrl) {
56
- if (!sdk_trace_web_1.shouldPropagateTraceHeaders(spanUrl, this._getConfig().propagateTraceHeaderCorsUrls)) {
61
+ const url = parseUrl(spanUrl).href;
62
+ if (!(0, sdk_trace_web_1.shouldPropagateTraceHeaders)(url, this._getConfig().propagateTraceHeaderCorsUrls)) {
57
63
  const headers = {};
58
64
  api.propagation.inject(api.context.active(), headers);
59
65
  if (Object.keys(headers).length > 0) {
@@ -78,7 +84,7 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
78
84
  const childSpan = this.tracer.startSpan('CORS Preflight', {
79
85
  startTime: corsPreFlightRequest[sdk_trace_web_1.PerformanceTimingNames.FETCH_START],
80
86
  });
81
- sdk_trace_web_1.addSpanNetworkEvents(childSpan, corsPreFlightRequest);
87
+ (0, sdk_trace_web_1.addSpanNetworkEvents)(childSpan, corsPreFlightRequest);
82
88
  childSpan.end(corsPreFlightRequest[sdk_trace_web_1.PerformanceTimingNames.RESPONSE_END]);
83
89
  });
84
90
  }
@@ -91,7 +97,7 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
91
97
  */
92
98
  _addFinalSpanAttributes(span, xhrMem, spanUrl) {
93
99
  if (typeof spanUrl === 'string') {
94
- const parsedUrl = sdk_trace_web_1.parseUrl(spanUrl);
100
+ const parsedUrl = parseUrl(spanUrl);
95
101
  if (xhrMem.status !== undefined) {
96
102
  span.setAttribute(semantic_conventions_1.SemanticAttributes.HTTP_STATUS_CODE, xhrMem.status);
97
103
  }
@@ -109,7 +115,7 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
109
115
  const applyCustomAttributesOnSpan = this._getConfig()
110
116
  .applyCustomAttributesOnSpan;
111
117
  if (typeof applyCustomAttributesOnSpan === 'function') {
112
- instrumentation_1.safeExecuteInTheMiddle(() => applyCustomAttributesOnSpan(span, xhr), error => {
118
+ (0, instrumentation_1.safeExecuteInTheMiddle)(() => applyCustomAttributesOnSpan(span, xhr), error => {
113
119
  if (!error) {
114
120
  return;
115
121
  }
@@ -127,18 +133,17 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
127
133
  _addResourceObserver(xhr, spanUrl) {
128
134
  const xhrMem = this._xhrMem.get(xhr);
129
135
  if (!xhrMem ||
130
- typeof window.PerformanceObserver === 'undefined' ||
131
- typeof window.PerformanceResourceTiming === 'undefined') {
136
+ PerformanceObserver == null ||
137
+ PerformanceResourceTiming == null) {
132
138
  return;
133
139
  }
134
140
  xhrMem.createdResources = {
135
141
  observer: new PerformanceObserver(list => {
136
142
  const entries = list.getEntries();
137
- const urlNormalizingAnchor = sdk_trace_web_1.getUrlNormalizingAnchor();
138
- urlNormalizingAnchor.href = spanUrl;
143
+ const parsedUrl = parseUrl(spanUrl);
139
144
  entries.forEach(entry => {
140
145
  if (entry.initiatorType === 'xmlhttprequest' &&
141
- entry.name === urlNormalizingAnchor.href) {
146
+ entry.name === parsedUrl.href) {
142
147
  if (xhrMem.createdResources) {
143
148
  xhrMem.createdResources.entries.push(entry);
144
149
  }
@@ -180,7 +185,7 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
180
185
  // ts thinks this is the perf_hooks module, but it is the browser performance api
181
186
  resources = core_1.otperformance.getEntriesByType('resource');
182
187
  }
183
- const resource = sdk_trace_web_1.getResource(spanUrl, startTime, endTime, resources, this._usedResources);
188
+ const resource = (0, sdk_trace_web_1.getResource)(parseUrl(spanUrl).href, startTime, endTime, resources, this._usedResources);
184
189
  if (resource.mainRequest) {
185
190
  const mainRequest = resource.mainRequest;
186
191
  this._markResourceAsUsed(mainRequest);
@@ -189,7 +194,7 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
189
194
  this._addChildSpan(span, corsPreFlightRequest);
190
195
  this._markResourceAsUsed(corsPreFlightRequest);
191
196
  }
192
- sdk_trace_web_1.addSpanNetworkEvents(span, mainRequest);
197
+ (0, sdk_trace_web_1.addSpanNetworkEvents)(span, mainRequest);
193
198
  }
194
199
  }
195
200
  /**
@@ -216,7 +221,7 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
216
221
  * @private
217
222
  */
218
223
  _createSpan(xhr, url, method) {
219
- if (core_1.isUrlIgnored(url, this._getConfig().ignoreUrls)) {
224
+ if ((0, core_1.isUrlIgnored)(url, this._getConfig().ignoreUrls)) {
220
225
  this._diag.debug('ignoring span as url matches ignored url');
221
226
  return;
222
227
  }
@@ -293,7 +298,7 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
293
298
  if (xhrMem.span) {
294
299
  plugin._applyAttributesAfterXHR(xhrMem.span, xhr);
295
300
  }
296
- const endTime = core_1.hrTime();
301
+ const endTime = (0, core_1.hrTime)();
297
302
  // the timeout is needed as observer doesn't have yet information
298
303
  // when event "load" is called. Also the time may differ depends on
299
304
  // browser and speed of computer
@@ -339,7 +344,7 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
339
344
  if (currentSpan && spanUrl) {
340
345
  api.context.with(api.trace.setSpan(api.context.active(), currentSpan), () => {
341
346
  plugin._tasksCount++;
342
- xhrMem.sendStartTime = core_1.hrTime();
347
+ xhrMem.sendStartTime = (0, core_1.hrTime)();
343
348
  currentSpan.addEvent(EventNames_1.EventNames.METHOD_SEND);
344
349
  this.addEventListener('abort', onAbort);
345
350
  this.addEventListener('error', onError);
@@ -364,11 +369,11 @@ class XMLHttpRequestInstrumentation extends instrumentation_1.InstrumentationBas
364
369
  */
365
370
  enable() {
366
371
  this._diag.debug('applying patch to', this.moduleName, this.version);
367
- if (instrumentation_1.isWrapped(XMLHttpRequest.prototype.open)) {
372
+ if ((0, instrumentation_1.isWrapped)(XMLHttpRequest.prototype.open)) {
368
373
  this._unwrap(XMLHttpRequest.prototype, 'open');
369
374
  this._diag.debug('removing previous patch from method open');
370
375
  }
371
- if (instrumentation_1.isWrapped(XMLHttpRequest.prototype.send)) {
376
+ if ((0, instrumentation_1.isWrapped)(XMLHttpRequest.prototype.send)) {
372
377
  this._unwrap(XMLHttpRequest.prototype, 'send');
373
378
  this._diag.debug('removing previous patch from method send');
374
379
  }
@@ -1 +1 @@
1
- {"version":3,"file":"xhr.js","sourceRoot":"","sources":["../../src/xhr.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xhr.js","sourceRoot":"","sources":["../../src/xhr.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,0CAA0C;AAC1C,oEAKwC;AACxC,8CAA0E;AAC1E,8EAAyE;AACzE,gEAMsC;AACtC,mDAAgD;AAOhD,uCAAoC;AACpC,2DAAwD;AAExD,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC5C,OAAO,CAAC,IAAI,GAAG,GAAG,CAAC;IACnB,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,uEAAuE;AACvE,2DAA2D;AAC3D,kEAAkE;AAClE,cAAc;AACd,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAgClC;;GAEG;AACH,MAAa,6BAA8B,SAAQ,qCAAmC;IASpF,YAAY,MAA4C;QACtD,KAAK,CACH,iDAAiD,EACjD,iBAAO,EACP,MAAM,CACP,CAAC;QAbK,cAAS,GAAW,kBAAkB,CAAC;QACvC,YAAO,GAAW,iBAAO,CAAC;QACnC,eAAU,GAAG,IAAI,CAAC,SAAS,CAAC;QAEpB,gBAAW,GAAG,CAAC,CAAC;QAChB,YAAO,GAAG,IAAI,OAAO,EAA0B,CAAC;QAChD,mBAAc,GAAG,IAAI,OAAO,EAA6B,CAAC;IAQlE,CAAC;IAED,IAAI,KAAI,CAAC;IAED,UAAU;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;;;OAKG;IACK,WAAW,CAAC,GAAmB,EAAE,OAAe;QACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC;QACnC,IACE,CAAC,IAAA,2CAA2B,EAC1B,GAAG,EACH,IAAI,CAAC,UAAU,EAAE,CAAC,4BAA4B,CAC/C,EACD;YACA,MAAM,OAAO,GAAqC,EAAE,CAAC;YACrD,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;aAC/D;YACD,OAAO;SACR;QACD,MAAM,OAAO,GAA+B,EAAE,CAAC;QAC/C,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjC,GAAG,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,aAAa,CACnB,IAAc,EACd,oBAA+C;QAE/C,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,GAAG,EAAE;YACnE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,gBAAgB,EAAE;gBACxD,SAAS,EAAE,oBAAoB,CAAC,sCAAG,CAAC,WAAW,CAAC;aACjD,CAAC,CAAC;YACH,IAAA,oCAAoB,EAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;YACtD,SAAS,CAAC,GAAG,CAAC,oBAAoB,CAAC,sCAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,uBAAuB,CAAC,IAAc,EAAE,MAAc,EAAE,OAAgB;QACtE,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;YAC/B,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;YACpC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;gBAC/B,IAAI,CAAC,YAAY,CAAC,yCAAkB,CAAC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;aACvE;YACD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE;gBACnC,IAAI,CAAC,YAAY,CAAC,+BAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC;aACvE;YACD,IAAI,CAAC,YAAY,CAAC,yCAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAChE,IAAI,CAAC,YAAY,CACf,yCAAkB,CAAC,WAAW,EAC9B,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CACpC,CAAC;YAEF,gFAAgF;YAChF,+CAA+C;YAC/C,IAAI,CAAC,YAAY,CACf,yCAAkB,CAAC,eAAe,EAClC,SAAS,CAAC,SAAS,CACpB,CAAC;SACH;IACH,CAAC;IAEO,wBAAwB,CAAC,IAAc,EAAE,GAAmB;QAClE,MAAM,2BAA2B,GAAG,IAAI,CAAC,UAAU,EAAE;aAClD,2BAA2B,CAAC;QAC/B,IAAI,OAAO,2BAA2B,KAAK,UAAU,EAAE;YACrD,IAAA,wCAAsB,EACpB,GAAG,EAAE,CAAC,2BAA2B,CAAC,IAAI,EAAE,GAAG,CAAC,EAC5C,KAAK,CAAC,EAAE;gBACN,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO;iBACR;gBAED,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC;YACzD,CAAC,EACD,IAAI,CACL,CAAC;SACH;IACH,CAAC;IAED;;;;;;OAMG;IACK,oBAAoB,CAAC,GAAmB,EAAE,OAAe;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IACE,CAAC,MAAM;YACP,mBAAmB,IAAI,IAAI;YAC3B,yBAAyB,IAAI,IAAI,EACjC;YACA,OAAO;SACR;QACD,MAAM,CAAC,gBAAgB,GAAG;YACxB,QAAQ,EAAE,IAAI,mBAAmB,CAAC,IAAI,CAAC,EAAE;gBACvC,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAiC,CAAC;gBACjE,MAAM,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAEpC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtB,IACE,KAAK,CAAC,aAAa,KAAK,gBAAgB;wBACxC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAC7B;wBACA,IAAI,MAAM,CAAC,gBAAgB,EAAE;4BAC3B,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBAC7C;qBACF;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YACF,OAAO,EAAE,EAAE;SACZ,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC;YACvC,UAAU,EAAE,CAAC,UAAU,CAAC;SACzB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACK,eAAe;QACrB,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,oBAAoB,EAAE;YAClE,oBAAyC,CAAC,oBAAoB,EAAE,CAAC;YACnE,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAA0B,CAAC;YACrD,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAA6B,CAAC;SAChE;IACH,CAAC;IAED;;;OAGG;IACK,gCAAgC,CACtC,MAAc,EACd,IAAc,EACd,OAAgB,EAChB,SAAsB,EACtB,OAAoB;QAEpB,IAAI,CAAC,OAAO,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAClE,OAAO;SACR;QAED,IAAI,SAAS,GACX,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC;QAElC,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;YACnC,gEAAgE;YAChE,gEAAgE;YAChE,cAAc;YACd,iFAAiF;YACjF,SAAS,GAAK,oBAAyC,CAAC,gBAAgB,CACtE,UAAU,CACoB,CAAC;SAClC;QAED,MAAM,QAAQ,GAAG,IAAA,2BAAW,EAC1B,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EACtB,SAAS,EACT,OAAO,EACP,SAAS,EACT,IAAI,CAAC,cAAc,CACpB,CAAC;QAEF,IAAI,QAAQ,CAAC,WAAW,EAAE;YACxB,MAAM,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;YACzC,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;YAEtC,MAAM,oBAAoB,GAAG,QAAQ,CAAC,oBAAoB,CAAC;YAC3D,IAAI,oBAAoB,EAAE;gBACxB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;gBAC/C,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;aAChD;YACD,IAAA,oCAAoB,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;SACzC;IACH,CAAC;IAED;;;;;OAKG;IACK,6BAA6B,CAAC,GAAmB;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,MAAM,EAAE;YACV,MAAM,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;YAC7D,IAAI,sBAAsB,EAAE;gBAC1B,sBAAsB,EAAE,CAAC;aAC1B;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC1B;IACH,CAAC;IAED;;;;;;OAMG;IACK,WAAW,CACjB,GAAmB,EACnB,GAAW,EACX,MAAc;QAEd,IAAI,IAAA,mBAAY,EAAC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,UAAU,CAAC,EAAE;YACnD,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YAC7D,OAAO;SACR;QACD,MAAM,QAAQ,GAAG,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;QAEhD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAClD,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM;YACzB,UAAU,EAAE;gBACV,CAAC,yCAAkB,CAAC,WAAW,CAAC,EAAE,MAAM;gBACxC,CAAC,yCAAkB,CAAC,QAAQ,CAAC,EAAE,GAAG;aACnC;SACF,CAAC,CAAC;QAEH,WAAW,CAAC,QAAQ,CAAC,uBAAU,CAAC,WAAW,CAAC,CAAC;QAE7C,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,CAAC;QAExC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE;YACpB,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,GAAG;SACb,CAAC,CAAC;QAEH,OAAO,WAAW,CAAC;IACrB,CAAC;IAED;;;;;;OAMG;IACK,mBAAmB,CAAC,QAAmC;QAC7D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACO,UAAU;QAClB,OAAO,CAAC,QAAsB,EAAgB,EAAE;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC;YACpB,OAAO,SAAS,SAAS,CAAuB,GAAG,IAAI;gBACrD,MAAM,MAAM,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC/B,MAAM,GAAG,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;gBAEtC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACO,UAAU;QAClB,MAAM,MAAM,GAAG,IAAI,CAAC;QAEpB,SAAS,cAAc,CACrB,SAAiB,EACjB,MAAc,EACd,OAAmB;YAEnB,MAAM,sBAAsB,GAAG,MAAM,CAAC,sBAAsB,CAAC;YAE7D,IAAI,OAAO,sBAAsB,KAAK,UAAU,EAAE;gBAChD,sBAAsB,EAAE,CAAC;aAC1B;YAED,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,MAAM,CAAC;YAEhD,IAAI,IAAI,EAAE;gBACR,MAAM,CAAC,gCAAgC,CACrC,MAAM,EACN,IAAI,EACJ,OAAO,EACP,aAAa,EACb,OAAO,CACR,CAAC;gBACF,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAClC,MAAM,CAAC,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACtD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAClB,MAAM,CAAC,WAAW,EAAE,CAAC;aACtB;YACD,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC;QAED,SAAS,OAAO,CAAC,SAAiB,EAAE,GAAmB;YACrD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO;aACR;YACD,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC3B,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;YACnC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAE3B,IAAI,MAAM,CAAC,IAAI,EAAE;gBACf,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACnD;YACD,MAAM,OAAO,GAAG,IAAA,aAAM,GAAE,CAAC;YAEzB,iEAAiE;YACjE,mEAAmE;YACnE,gCAAgC;YAChC,UAAU,CAAC,GAAG,EAAE;gBACd,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;YAC7C,CAAC,EAAE,qBAAqB,CAAC,CAAC;QAC5B,CAAC;QAED,SAAS,OAAO;YACd,OAAO,CAAC,uBAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,SAAS,OAAO;YACd,OAAO,CAAC,uBAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,SAAS,SAAS;YAChB,OAAO,CAAC,uBAAU,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAED,SAAS,MAAM;YACb,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE;gBACrB,OAAO,CAAC,uBAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;aACtC;iBAAM;gBACL,OAAO,CAAC,uBAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;aACvC;QACH,CAAC;QAED,SAAS,UAAU,CAAC,GAAmB;YACrC,GAAG,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,GAAG,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC1C,GAAG,CAAC,mBAAmB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACxC,GAAG,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,MAAM,EAAE;gBACV,MAAM,CAAC,sBAAsB,GAAG,SAAS,CAAC;aAC3C;QACH,CAAC;QAED,OAAO,CAAC,QAAsB,EAAgB,EAAE;YAC9C,OAAO,SAAS,SAAS,CAAuB,GAAG,IAAI;gBACrD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,CAAC,MAAM,EAAE;oBACX,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBACnC;gBACD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;gBAChC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;gBAE/B,IAAI,WAAW,IAAI,OAAO,EAAE;oBAC1B,GAAG,CAAC,OAAO,CAAC,IAAI,CACd,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,WAAW,CAAC,EACpD,GAAG,EAAE;wBACH,MAAM,CAAC,WAAW,EAAE,CAAC;wBACrB,MAAM,CAAC,aAAa,GAAG,IAAA,aAAM,GAAE,CAAC;wBAChC,WAAW,CAAC,QAAQ,CAAC,uBAAU,CAAC,WAAW,CAAC,CAAC;wBAE7C,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBACxC,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;wBACxC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;wBACtC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;wBAE5C,MAAM,CAAC,sBAAsB,GAAG,GAAG,EAAE;4BACnC,UAAU,CAAC,IAAI,CAAC,CAAC;4BACjB,IAAI,MAAM,CAAC,gBAAgB,EAAE;gCAC3B,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;6BAC/C;wBACH,CAAC,CAAC;wBACF,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;wBAClC,MAAM,CAAC,oBAAoB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;oBAC7C,CAAC,CACF,CAAC;iBACH;gBACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACpC,CAAC,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACM,MAAM;QACb,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAErE,IAAI,IAAA,2BAAS,EAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;SAC9D;QAED,IAAI,IAAA,2BAAS,EAAC,cAAc,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC/C,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;SAC9D;QAED,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACM,OAAO;QACd,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,IAAI,OAAO,EAA0B,CAAC;QACrD,IAAI,CAAC,cAAc,GAAG,IAAI,OAAO,EAA6B,CAAC;IACjE,CAAC;CACF;AAhdD,sEAgdC","sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport * as api from '@opentelemetry/api';\nimport {\n isWrapped,\n InstrumentationBase,\n InstrumentationConfig,\n safeExecuteInTheMiddle,\n} from '@opentelemetry/instrumentation';\nimport { hrTime, isUrlIgnored, otperformance } from '@opentelemetry/core';\nimport { SemanticAttributes } from '@opentelemetry/semantic-conventions';\nimport {\n addSpanNetworkEvents,\n getResource,\n PerformanceTimingNames as PTN,\n shouldPropagateTraceHeaders,\n URLLike\n} from '@opentelemetry/sdk-trace-web';\nimport { EventNames } from './enums/EventNames';\nimport {\n OpenFunction,\n PropagateTraceHeaderCorsUrls,\n SendFunction,\n XhrMem,\n} from './types';\nimport { VERSION } from './version';\nimport { AttributeNames } from './enums/AttributeNames';\n\nfunction parseUrl(url: string): URLLike {\n const element = document.createElement('a');\n element.href = url;\n return element;\n}\n\n// how long to wait for observer to collect information about resources\n// this is needed as event \"load\" is called before observer\n// hard to say how long it should really wait, seems like 300ms is\n// safe enough\nconst OBSERVER_WAIT_TIME_MS = 300;\n\nexport type XHRCustomAttributeFunction = (\n span: api.Span,\n xhr: XMLHttpRequest\n) => void;\n\n/**\n * XMLHttpRequest config\n */\nexport interface XMLHttpRequestInstrumentationConfig\n extends InstrumentationConfig {\n /**\n * The number of timing resources is limited, after the limit\n * (chrome 250, safari 150) the information is not collected anymore.\n * The only way to prevent that is to regularly clean the resources\n * whenever it is possible. This is needed only when PerformanceObserver\n * is not available\n */\n clearTimingResources?: boolean;\n /** URLs which should include trace headers when origin doesn't match */\n propagateTraceHeaderCorsUrls?: PropagateTraceHeaderCorsUrls;\n /**\n * URLs that partially match any regex in ignoreUrls will not be traced.\n * In addition, URLs that are _exact matches_ of strings in ignoreUrls will\n * also not be traced.\n */\n ignoreUrls?: Array<string | RegExp>;\n /** Function for adding custom attributes on the span */\n applyCustomAttributesOnSpan?: XHRCustomAttributeFunction;\n}\n\n/**\n * This class represents a XMLHttpRequest plugin for auto instrumentation\n */\nexport class XMLHttpRequestInstrumentation extends InstrumentationBase<XMLHttpRequest> {\n readonly component: string = 'xml-http-request';\n readonly version: string = VERSION;\n moduleName = this.component;\n\n private _tasksCount = 0;\n private _xhrMem = new WeakMap<XMLHttpRequest, XhrMem>();\n private _usedResources = new WeakSet<PerformanceResourceTiming>();\n\n constructor(config?: XMLHttpRequestInstrumentationConfig) {\n super(\n '@opentelemetry/instrumentation-xml-http-request',\n VERSION,\n config\n );\n }\n\n init() {}\n\n private _getConfig(): XMLHttpRequestInstrumentationConfig {\n return this._config;\n }\n\n /**\n * Adds custom headers to XMLHttpRequest\n * @param xhr\n * @param spanUrl\n * @private\n */\n private _addHeaders(xhr: XMLHttpRequest, spanUrl: string) {\n const url = parseUrl(spanUrl).href;\n if (\n !shouldPropagateTraceHeaders(\n url,\n this._getConfig().propagateTraceHeaderCorsUrls\n )\n ) {\n const headers: Partial<Record<string, unknown>> = {};\n api.propagation.inject(api.context.active(), headers);\n if (Object.keys(headers).length > 0) {\n this._diag.debug('headers inject skipped due to CORS policy');\n }\n return;\n }\n const headers: { [key: string]: unknown } = {};\n api.propagation.inject(api.context.active(), headers);\n Object.keys(headers).forEach(key => {\n xhr.setRequestHeader(key, String(headers[key]));\n });\n }\n\n /**\n * Add cors pre flight child span\n * @param span\n * @param corsPreFlightRequest\n * @private\n */\n private _addChildSpan(\n span: api.Span,\n corsPreFlightRequest: PerformanceResourceTiming\n ): void {\n api.context.with(api.trace.setSpan(api.context.active(), span), () => {\n const childSpan = this.tracer.startSpan('CORS Preflight', {\n startTime: corsPreFlightRequest[PTN.FETCH_START],\n });\n addSpanNetworkEvents(childSpan, corsPreFlightRequest);\n childSpan.end(corsPreFlightRequest[PTN.RESPONSE_END]);\n });\n }\n\n /**\n * Add attributes when span is going to end\n * @param span\n * @param xhr\n * @param spanUrl\n * @private\n */\n _addFinalSpanAttributes(span: api.Span, xhrMem: XhrMem, spanUrl?: string) {\n if (typeof spanUrl === 'string') {\n const parsedUrl = parseUrl(spanUrl);\n if (xhrMem.status !== undefined) {\n span.setAttribute(SemanticAttributes.HTTP_STATUS_CODE, xhrMem.status);\n }\n if (xhrMem.statusText !== undefined) {\n span.setAttribute(AttributeNames.HTTP_STATUS_TEXT, xhrMem.statusText);\n }\n span.setAttribute(SemanticAttributes.HTTP_HOST, parsedUrl.host);\n span.setAttribute(\n SemanticAttributes.HTTP_SCHEME,\n parsedUrl.protocol.replace(':', '')\n );\n\n // @TODO do we want to collect this or it will be collected earlier once only or\n // maybe when parent span is not available ?\n span.setAttribute(\n SemanticAttributes.HTTP_USER_AGENT,\n navigator.userAgent\n );\n }\n }\n\n private _applyAttributesAfterXHR(span: api.Span, xhr: XMLHttpRequest) {\n const applyCustomAttributesOnSpan = this._getConfig()\n .applyCustomAttributesOnSpan;\n if (typeof applyCustomAttributesOnSpan === 'function') {\n safeExecuteInTheMiddle(\n () => applyCustomAttributesOnSpan(span, xhr),\n error => {\n if (!error) {\n return;\n }\n\n this._diag.error('applyCustomAttributesOnSpan', error);\n },\n true\n );\n }\n }\n\n /**\n * will collect information about all resources created\n * between \"send\" and \"end\" with additional waiting for main resource\n * @param xhr\n * @param spanUrl\n * @private\n */\n private _addResourceObserver(xhr: XMLHttpRequest, spanUrl: string) {\n const xhrMem = this._xhrMem.get(xhr);\n if (\n !xhrMem ||\n PerformanceObserver == null ||\n PerformanceResourceTiming == null\n ) {\n return;\n }\n xhrMem.createdResources = {\n observer: new PerformanceObserver(list => {\n const entries = list.getEntries() as PerformanceResourceTiming[];\n const parsedUrl = parseUrl(spanUrl);\n\n entries.forEach(entry => {\n if (\n entry.initiatorType === 'xmlhttprequest' &&\n entry.name === parsedUrl.href\n ) {\n if (xhrMem.createdResources) {\n xhrMem.createdResources.entries.push(entry);\n }\n }\n });\n }),\n entries: [],\n };\n xhrMem.createdResources.observer.observe({\n entryTypes: ['resource'],\n });\n }\n\n /**\n * Clears the resource timings and all resources assigned with spans\n * when {@link XMLHttpRequestInstrumentationConfig.clearTimingResources} is\n * set to true (default false)\n * @private\n */\n private _clearResources() {\n if (this._tasksCount === 0 && this._getConfig().clearTimingResources) {\n ((otperformance as unknown) as Performance).clearResourceTimings();\n this._xhrMem = new WeakMap<XMLHttpRequest, XhrMem>();\n this._usedResources = new WeakSet<PerformanceResourceTiming>();\n }\n }\n\n /**\n * Finds appropriate resource and add network events to the span\n * @param span\n */\n private _findResourceAndAddNetworkEvents(\n xhrMem: XhrMem,\n span: api.Span,\n spanUrl?: string,\n startTime?: api.HrTime,\n endTime?: api.HrTime\n ): void {\n if (!spanUrl || !startTime || !endTime || !xhrMem.createdResources) {\n return;\n }\n\n let resources: PerformanceResourceTiming[] =\n xhrMem.createdResources.entries;\n\n if (!resources || !resources.length) {\n // fallback - either Observer is not available or it took longer\n // then OBSERVER_WAIT_TIME_MS and observer didn't collect enough\n // information\n // ts thinks this is the perf_hooks module, but it is the browser performance api\n resources = ((otperformance as unknown) as Performance).getEntriesByType(\n 'resource'\n ) as PerformanceResourceTiming[];\n }\n\n const resource = getResource(\n parseUrl(spanUrl).href,\n startTime,\n endTime,\n resources,\n this._usedResources\n );\n\n if (resource.mainRequest) {\n const mainRequest = resource.mainRequest;\n this._markResourceAsUsed(mainRequest);\n\n const corsPreFlightRequest = resource.corsPreFlightRequest;\n if (corsPreFlightRequest) {\n this._addChildSpan(span, corsPreFlightRequest);\n this._markResourceAsUsed(corsPreFlightRequest);\n }\n addSpanNetworkEvents(span, mainRequest);\n }\n }\n\n /**\n * Removes the previous information about span.\n * This might happened when the same xhr is used again.\n * @param xhr\n * @private\n */\n private _cleanPreviousSpanInformation(xhr: XMLHttpRequest) {\n const xhrMem = this._xhrMem.get(xhr);\n if (xhrMem) {\n const callbackToRemoveEvents = xhrMem.callbackToRemoveEvents;\n if (callbackToRemoveEvents) {\n callbackToRemoveEvents();\n }\n this._xhrMem.delete(xhr);\n }\n }\n\n /**\n * Creates a new span when method \"open\" is called\n * @param xhr\n * @param url\n * @param method\n * @private\n */\n private _createSpan(\n xhr: XMLHttpRequest,\n url: string,\n method: string\n ): api.Span | undefined {\n if (isUrlIgnored(url, this._getConfig().ignoreUrls)) {\n this._diag.debug('ignoring span as url matches ignored url');\n return;\n }\n const spanName = `HTTP ${method.toUpperCase()}`;\n\n const currentSpan = this.tracer.startSpan(spanName, {\n kind: api.SpanKind.CLIENT,\n attributes: {\n [SemanticAttributes.HTTP_METHOD]: method,\n [SemanticAttributes.HTTP_URL]: url,\n },\n });\n\n currentSpan.addEvent(EventNames.METHOD_OPEN);\n\n this._cleanPreviousSpanInformation(xhr);\n\n this._xhrMem.set(xhr, {\n span: currentSpan,\n spanUrl: url,\n });\n\n return currentSpan;\n }\n\n /**\n * Marks certain [resource]{@link PerformanceResourceTiming} when information\n * from this is used to add events to span.\n * This is done to avoid reusing the same resource again for next span\n * @param resource\n * @private\n */\n private _markResourceAsUsed(resource: PerformanceResourceTiming) {\n this._usedResources.add(resource);\n }\n\n /**\n * Patches the method open\n * @private\n */\n protected _patchOpen() {\n return (original: OpenFunction): OpenFunction => {\n const plugin = this;\n return function patchOpen(this: XMLHttpRequest, ...args): void {\n const method: string = args[0];\n const url: string = args[1];\n plugin._createSpan(this, url, method);\n\n return original.apply(this, args);\n };\n };\n }\n\n /**\n * Patches the method send\n * @private\n */\n protected _patchSend() {\n const plugin = this;\n\n function endSpanTimeout(\n eventName: string,\n xhrMem: XhrMem,\n endTime: api.HrTime\n ) {\n const callbackToRemoveEvents = xhrMem.callbackToRemoveEvents;\n\n if (typeof callbackToRemoveEvents === 'function') {\n callbackToRemoveEvents();\n }\n\n const { span, spanUrl, sendStartTime } = xhrMem;\n\n if (span) {\n plugin._findResourceAndAddNetworkEvents(\n xhrMem,\n span,\n spanUrl,\n sendStartTime,\n endTime\n );\n span.addEvent(eventName, endTime);\n plugin._addFinalSpanAttributes(span, xhrMem, spanUrl);\n span.end(endTime);\n plugin._tasksCount--;\n }\n plugin._clearResources();\n }\n\n function endSpan(eventName: string, xhr: XMLHttpRequest) {\n const xhrMem = plugin._xhrMem.get(xhr);\n if (!xhrMem) {\n return;\n }\n xhrMem.status = xhr.status;\n xhrMem.statusText = xhr.statusText;\n plugin._xhrMem.delete(xhr);\n\n if (xhrMem.span) {\n plugin._applyAttributesAfterXHR(xhrMem.span, xhr);\n }\n const endTime = hrTime();\n\n // the timeout is needed as observer doesn't have yet information\n // when event \"load\" is called. Also the time may differ depends on\n // browser and speed of computer\n setTimeout(() => {\n endSpanTimeout(eventName, xhrMem, endTime);\n }, OBSERVER_WAIT_TIME_MS);\n }\n\n function onError(this: XMLHttpRequest) {\n endSpan(EventNames.EVENT_ERROR, this);\n }\n\n function onAbort(this: XMLHttpRequest) {\n endSpan(EventNames.EVENT_ABORT, this);\n }\n\n function onTimeout(this: XMLHttpRequest) {\n endSpan(EventNames.EVENT_TIMEOUT, this);\n }\n\n function onLoad(this: XMLHttpRequest) {\n if (this.status < 299) {\n endSpan(EventNames.EVENT_LOAD, this);\n } else {\n endSpan(EventNames.EVENT_ERROR, this);\n }\n }\n\n function unregister(xhr: XMLHttpRequest) {\n xhr.removeEventListener('abort', onAbort);\n xhr.removeEventListener('error', onError);\n xhr.removeEventListener('load', onLoad);\n xhr.removeEventListener('timeout', onTimeout);\n const xhrMem = plugin._xhrMem.get(xhr);\n if (xhrMem) {\n xhrMem.callbackToRemoveEvents = undefined;\n }\n }\n\n return (original: SendFunction): SendFunction => {\n return function patchSend(this: XMLHttpRequest, ...args): void {\n const xhrMem = plugin._xhrMem.get(this);\n if (!xhrMem) {\n return original.apply(this, args);\n }\n const currentSpan = xhrMem.span;\n const spanUrl = xhrMem.spanUrl;\n\n if (currentSpan && spanUrl) {\n api.context.with(\n api.trace.setSpan(api.context.active(), currentSpan),\n () => {\n plugin._tasksCount++;\n xhrMem.sendStartTime = hrTime();\n currentSpan.addEvent(EventNames.METHOD_SEND);\n\n this.addEventListener('abort', onAbort);\n this.addEventListener('error', onError);\n this.addEventListener('load', onLoad);\n this.addEventListener('timeout', onTimeout);\n\n xhrMem.callbackToRemoveEvents = () => {\n unregister(this);\n if (xhrMem.createdResources) {\n xhrMem.createdResources.observer.disconnect();\n }\n };\n plugin._addHeaders(this, spanUrl);\n plugin._addResourceObserver(this, spanUrl);\n }\n );\n }\n return original.apply(this, args);\n };\n };\n }\n\n /**\n * implements enable function\n */\n override enable() {\n this._diag.debug('applying patch to', this.moduleName, this.version);\n\n if (isWrapped(XMLHttpRequest.prototype.open)) {\n this._unwrap(XMLHttpRequest.prototype, 'open');\n this._diag.debug('removing previous patch from method open');\n }\n\n if (isWrapped(XMLHttpRequest.prototype.send)) {\n this._unwrap(XMLHttpRequest.prototype, 'send');\n this._diag.debug('removing previous patch from method send');\n }\n\n this._wrap(XMLHttpRequest.prototype, 'open', this._patchOpen());\n this._wrap(XMLHttpRequest.prototype, 'send', this._patchSend());\n }\n\n /**\n * implements disable function\n */\n override disable() {\n this._diag.debug('removing patch from', this.moduleName, this.version);\n\n this._unwrap(XMLHttpRequest.prototype, 'open');\n this._unwrap(XMLHttpRequest.prototype, 'send');\n\n this._tasksCount = 0;\n this._xhrMem = new WeakMap<XMLHttpRequest, XhrMem>();\n this._usedResources = new WeakSet<PerformanceResourceTiming>();\n }\n}\n"]}
package/package.json CHANGED
@@ -1,21 +1,26 @@
1
1
  {
2
2
  "name": "@opentelemetry/instrumentation-xml-http-request",
3
- "version": "0.25.1-alpha.7+dfb597de",
3
+ "version": "0.28.0",
4
4
  "description": "OpenTelemetry XMLHttpRequest automatic instrumentation package.",
5
5
  "main": "build/src/index.js",
6
6
  "module": "build/esm/index.js",
7
+ "esnext": "build/esnext/index.js",
7
8
  "types": "build/src/index.d.ts",
8
9
  "repository": "open-telemetry/opentelemetry-js",
9
10
  "scripts": {
10
- "compile": "tsc --build tsconfig.json tsconfig.esm.json",
11
- "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json",
11
+ "prepublishOnly": "npm run compile",
12
+ "compile": "tsc --build tsconfig.all.json",
13
+ "clean": "tsc --build --clean tsconfig.all.json",
12
14
  "lint": "eslint . --ext .ts",
13
15
  "lint:fix": "eslint . --ext .ts --fix",
14
- "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../",
15
- "version": "node ../../scripts/version-update.js",
16
+ "codecov:browser": "nyc report --reporter=json && codecov -f coverage/*.json -p ../../../",
17
+ "version": "node ../../../scripts/version-update.js",
16
18
  "tdd": "karma start",
17
19
  "test:browser": "nyc karma start --single-run",
18
- "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json"
20
+ "watch": "tsc --build --watch tsconfig.all.json",
21
+ "precompile": "lerna run version --scope $(npm pkg get name) --include-dependencies",
22
+ "prewatch": "node ../../../scripts/version-update.js",
23
+ "peer-api-check": "node ../../../scripts/peer-api-check.js"
19
24
  },
20
25
  "keywords": [
21
26
  "opentelemetry",
@@ -29,12 +34,15 @@
29
34
  "author": "OpenTelemetry Authors",
30
35
  "license": "Apache-2.0",
31
36
  "engines": {
32
- "node": ">=8.0.0"
37
+ "node": ">=8.12.0"
33
38
  },
34
39
  "files": [
35
40
  "build/esm/**/*.js",
36
41
  "build/esm/**/*.js.map",
37
42
  "build/esm/**/*.d.ts",
43
+ "build/esnext/**/*.js",
44
+ "build/esnext/**/*.js.map",
45
+ "build/esnext/**/*.d.ts",
38
46
  "build/src/**/*.js",
39
47
  "build/src/**/*.js.map",
40
48
  "build/src/**/*.d.ts",
@@ -46,19 +54,19 @@
46
54
  "access": "public"
47
55
  },
48
56
  "devDependencies": {
49
- "@babel/core": "7.15.0",
50
- "@opentelemetry/api": "^1.0.2",
51
- "@opentelemetry/context-zone": "^0.25.0",
52
- "@opentelemetry/propagator-b3": "^0.25.0",
53
- "@opentelemetry/sdk-trace-base": "^0.25.1-alpha.7+dfb597de",
57
+ "@babel/core": "7.16.0",
58
+ "@opentelemetry/api": "^1.0.0",
59
+ "@opentelemetry/context-zone": "1.2.0",
60
+ "@opentelemetry/propagator-b3": "1.2.0",
61
+ "@opentelemetry/sdk-trace-base": "1.2.0",
54
62
  "@types/mocha": "8.2.3",
55
- "@types/node": "14.17.11",
56
- "@types/sinon": "10.0.2",
57
- "@types/webpack-env": "1.16.2",
58
- "babel-loader": "8.2.2",
63
+ "@types/node": "14.17.33",
64
+ "@types/sinon": "10.0.6",
65
+ "@types/webpack-env": "1.16.3",
66
+ "babel-loader": "8.2.3",
59
67
  "codecov": "3.8.3",
60
68
  "istanbul-instrumenter-loader": "3.0.1",
61
- "karma": "5.2.3",
69
+ "karma": "6.3.16",
62
70
  "karma-chrome-launcher": "3.1.0",
63
71
  "karma-coverage-istanbul-reporter": "3.0.3",
64
72
  "karma-mocha": "2.0.1",
@@ -67,22 +75,22 @@
67
75
  "mocha": "7.2.0",
68
76
  "nyc": "15.1.0",
69
77
  "rimraf": "3.0.2",
70
- "sinon": "11.1.2",
78
+ "sinon": "12.0.1",
71
79
  "ts-loader": "8.3.0",
72
80
  "ts-mocha": "8.0.0",
73
- "typescript": "4.3.5",
81
+ "typescript": "4.4.4",
74
82
  "webpack": "4.46.0",
75
- "webpack-cli": "4.8.0",
83
+ "webpack-cli": "4.9.1",
76
84
  "webpack-merge": "5.8.0"
77
85
  },
78
86
  "peerDependencies": {
79
- "@opentelemetry/api": "^1.0.2"
87
+ "@opentelemetry/api": "^1.0.0"
80
88
  },
81
89
  "dependencies": {
82
- "@opentelemetry/core": "^0.25.0",
83
- "@opentelemetry/instrumentation": "^0.25.0",
84
- "@opentelemetry/sdk-trace-web": "^0.25.1-alpha.7+dfb597de",
85
- "@opentelemetry/semantic-conventions": "^0.25.0"
90
+ "@opentelemetry/core": "1.2.0",
91
+ "@opentelemetry/instrumentation": "0.28.0",
92
+ "@opentelemetry/sdk-trace-web": "1.2.0",
93
+ "@opentelemetry/semantic-conventions": "1.2.0"
86
94
  },
87
- "gitHead": "dfb597def863b15b37b24d965018e8c92d2ee70c"
95
+ "gitHead": "a0a670a03fd35b0799bee8cc466f79e93b5b6dd2"
88
96
  }