@opentelemetry/plugin-react-load 0.31.1 → 0.33.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.
- package/build/esm/BaseOpenTelemetryComponent.js +114 -179
- package/build/esm/BaseOpenTelemetryComponent.js.map +1 -1
- package/build/esm/internal-types.d.ts +8 -8
- package/build/esm/internal-types.d.ts.map +1 -1
- package/build/esm/version.d.ts +1 -1
- package/build/esm/version.js +2 -2
- package/build/esm/version.js.map +1 -1
- package/build/esnext/BaseOpenTelemetryComponent.js +8 -5
- package/build/esnext/BaseOpenTelemetryComponent.js.map +1 -1
- package/build/esnext/internal-types.d.ts +8 -8
- package/build/esnext/internal-types.d.ts.map +1 -1
- package/build/esnext/version.d.ts +1 -1
- package/build/esnext/version.js +1 -1
- package/build/esnext/version.js.map +1 -1
- package/build/src/BaseOpenTelemetryComponent.js +6 -4
- package/build/src/BaseOpenTelemetryComponent.js.map +1 -1
- package/build/src/index.js +5 -1
- package/build/src/index.js.map +1 -1
- package/build/src/internal-types.d.ts +8 -8
- package/build/src/internal-types.d.ts.map +1 -1
- package/build/src/version.d.ts +1 -1
- package/build/src/version.js +1 -1
- package/build/src/version.js.map +1 -1
- package/package.json +12 -12
|
@@ -13,21 +13,6 @@
|
|
|
13
13
|
* See the License for the specific language governing permissions and
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
|
-
var __extends = (this && this.__extends) || (function () {
|
|
17
|
-
var extendStatics = function (d, b) {
|
|
18
|
-
extendStatics = Object.setPrototypeOf ||
|
|
19
|
-
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
|
|
20
|
-
function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
|
|
21
|
-
return extendStatics(d, b);
|
|
22
|
-
};
|
|
23
|
-
return function (d, b) {
|
|
24
|
-
if (typeof b !== "function" && b !== null)
|
|
25
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
26
|
-
extendStatics(d, b);
|
|
27
|
-
function __() { this.constructor = d; }
|
|
28
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
29
|
-
};
|
|
30
|
-
})();
|
|
31
16
|
import * as api from '@opentelemetry/api';
|
|
32
17
|
import { isWrapped } from '@opentelemetry/instrumentation';
|
|
33
18
|
import * as shimmer from 'shimmer';
|
|
@@ -38,35 +23,36 @@ import { PACKAGE_VERSION } from './version';
|
|
|
38
23
|
/**
|
|
39
24
|
* This class is the base component for a React component with lifecycle instrumentation
|
|
40
25
|
*/
|
|
41
|
-
|
|
42
|
-
|
|
26
|
+
class BaseOpenTelemetryComponent extends React.Component {
|
|
27
|
+
component = 'react-load';
|
|
28
|
+
moduleName = this.component;
|
|
29
|
+
_parentSpanMap;
|
|
30
|
+
static _tracer;
|
|
31
|
+
static _logger = api.diag;
|
|
43
32
|
/**
|
|
44
33
|
* @param props Props of the React component
|
|
45
34
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
_this._parentSpanMap = new WeakMap();
|
|
51
|
-
_this.patch();
|
|
52
|
-
return _this;
|
|
35
|
+
constructor(props) {
|
|
36
|
+
super(props);
|
|
37
|
+
this._parentSpanMap = new WeakMap();
|
|
38
|
+
this.patch();
|
|
53
39
|
}
|
|
54
40
|
/**
|
|
55
41
|
* Sets the tracer for all components being instrumented
|
|
56
42
|
* @param name Name of tracer
|
|
57
43
|
* @param version Version of tracer, this is optional. When not provided it will use the latest.
|
|
58
44
|
*/
|
|
59
|
-
|
|
45
|
+
static setTracer(name, version) {
|
|
60
46
|
BaseOpenTelemetryComponent._tracer = api.trace.getTracer(name, version ? version : PACKAGE_VERSION);
|
|
61
|
-
}
|
|
47
|
+
}
|
|
62
48
|
/**
|
|
63
49
|
* Sets the logger for all components being instrumented
|
|
64
50
|
* @param logger
|
|
65
51
|
*/
|
|
66
|
-
|
|
52
|
+
static setLogger(logger) {
|
|
67
53
|
api.diag.setLogger(logger);
|
|
68
54
|
BaseOpenTelemetryComponent._logger = logger;
|
|
69
|
-
}
|
|
55
|
+
}
|
|
70
56
|
/**
|
|
71
57
|
* Creates a new span as a child of the current parent span.
|
|
72
58
|
* If parent span is undefined, just the child is created.
|
|
@@ -74,23 +60,23 @@ var BaseOpenTelemetryComponent = /** @class */ (function (_super) {
|
|
|
74
60
|
* @param name Name of span
|
|
75
61
|
* @param parentSpan parent span
|
|
76
62
|
*/
|
|
77
|
-
|
|
63
|
+
_createSpanWithParent(react, name, parentSpan) {
|
|
78
64
|
return BaseOpenTelemetryComponent._tracer.startSpan(name, {
|
|
79
65
|
attributes: this._getAttributes(react),
|
|
80
66
|
}, parentSpan
|
|
81
67
|
? api.trace.setSpan(api.context.active(), parentSpan)
|
|
82
68
|
: undefined);
|
|
83
|
-
}
|
|
69
|
+
}
|
|
84
70
|
/**
|
|
85
71
|
* Creates a new span
|
|
86
72
|
* @param react React component currently being instrumented
|
|
87
73
|
* @param name Name of span
|
|
88
74
|
*/
|
|
89
|
-
|
|
75
|
+
_createSpan(react, name) {
|
|
90
76
|
return BaseOpenTelemetryComponent._tracer.startSpan(name, {
|
|
91
77
|
attributes: this._getAttributes(react),
|
|
92
78
|
});
|
|
93
|
-
}
|
|
79
|
+
}
|
|
94
80
|
/**
|
|
95
81
|
* Provides instrumentation for a function
|
|
96
82
|
* @param react React component currently instrumenting.
|
|
@@ -98,11 +84,11 @@ var BaseOpenTelemetryComponent = /** @class */ (function (_super) {
|
|
|
98
84
|
* @param original Original function currently being wrapped.
|
|
99
85
|
* @parentName Name to set parent span to on error.
|
|
100
86
|
*/
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
87
|
+
_instrumentFunction(react, spanName, parent, original) {
|
|
88
|
+
const span = this._createSpanWithParent(react, spanName, parent);
|
|
89
|
+
let wasError = false;
|
|
104
90
|
try {
|
|
105
|
-
return api.context.with(api.trace.setSpan(api.context.active(), span),
|
|
91
|
+
return api.context.with(api.trace.setSpan(api.context.active(), span), () => {
|
|
106
92
|
return original();
|
|
107
93
|
});
|
|
108
94
|
}
|
|
@@ -117,155 +103,124 @@ var BaseOpenTelemetryComponent = /** @class */ (function (_super) {
|
|
|
117
103
|
this._endParentSpan(react);
|
|
118
104
|
}
|
|
119
105
|
}
|
|
120
|
-
}
|
|
106
|
+
}
|
|
121
107
|
/**
|
|
122
108
|
* Ends the current parent span.
|
|
123
109
|
* @param react React component parent span belongs to.
|
|
124
110
|
*/
|
|
125
|
-
|
|
126
|
-
|
|
111
|
+
_endParentSpan(react) {
|
|
112
|
+
const parentSpan = this._parentSpanMap.get(react);
|
|
127
113
|
if (parentSpan) {
|
|
128
114
|
parentSpan.end();
|
|
129
115
|
this._parentSpanMap.delete(react);
|
|
130
116
|
}
|
|
131
|
-
}
|
|
117
|
+
}
|
|
132
118
|
/**
|
|
133
119
|
* Returns attributes object for spans
|
|
134
120
|
* @param react React component currently being instrumented
|
|
135
121
|
**/
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
var state;
|
|
122
|
+
_getAttributes(react) {
|
|
123
|
+
let state;
|
|
139
124
|
try {
|
|
140
125
|
state = JSON.stringify(react.state);
|
|
141
126
|
}
|
|
142
|
-
catch
|
|
127
|
+
catch {
|
|
143
128
|
state = '{"message": "state could not be turned into string"}';
|
|
144
129
|
}
|
|
145
|
-
return
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
}
|
|
130
|
+
return {
|
|
131
|
+
[AttributeNames.LOCATION_URL]: window.location.href,
|
|
132
|
+
[AttributeNames.REACT_NAME]: react.constructor.name,
|
|
133
|
+
[AttributeNames.REACT_STATE]: state,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
151
136
|
/**
|
|
152
137
|
* This function returns a parent span. If the parent doesn't
|
|
153
138
|
* exist, the function creates one
|
|
154
139
|
* @param react React component parent span belongs to.
|
|
155
140
|
*/
|
|
156
|
-
|
|
157
|
-
|
|
141
|
+
_getParentSpan(react, parentName) {
|
|
142
|
+
const parentSpan = this._parentSpanMap.get(react);
|
|
158
143
|
if (!parentSpan) {
|
|
159
|
-
|
|
144
|
+
const span = this._createSpan(react, parentName);
|
|
160
145
|
this._parentSpanMap.set(react, span);
|
|
161
146
|
}
|
|
162
147
|
return this._parentSpanMap.get(react);
|
|
163
|
-
}
|
|
148
|
+
}
|
|
164
149
|
/**
|
|
165
150
|
* Patches the render lifecycle method
|
|
166
151
|
*/
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
return function patchRender() {
|
|
172
|
-
var _this = this;
|
|
173
|
-
var args = [];
|
|
174
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
175
|
-
args[_i] = arguments[_i];
|
|
176
|
-
}
|
|
152
|
+
_patchRender() {
|
|
153
|
+
return (original) => {
|
|
154
|
+
const plugin = this;
|
|
155
|
+
return function patchRender(...args) {
|
|
177
156
|
// Render is the first method in the mounting flow, if a parent span wasn't created already then we're in the mounting flow
|
|
178
|
-
|
|
157
|
+
let parentSpan;
|
|
179
158
|
if (!plugin._parentSpanMap.get(this)) {
|
|
180
159
|
parentSpan = plugin._getParentSpan(this, AttributeNames.MOUNTING_SPAN);
|
|
181
160
|
}
|
|
182
161
|
else {
|
|
183
162
|
parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
184
163
|
}
|
|
185
|
-
return plugin._instrumentFunction(this, 'render', parentSpan,
|
|
186
|
-
return original.apply(
|
|
164
|
+
return plugin._instrumentFunction(this, 'render', parentSpan, () => {
|
|
165
|
+
return original.apply(this, args);
|
|
187
166
|
});
|
|
188
167
|
};
|
|
189
168
|
};
|
|
190
|
-
}
|
|
169
|
+
}
|
|
191
170
|
/**
|
|
192
171
|
* Patches the componentDidMount lifecycle method
|
|
193
172
|
*/
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
202
|
-
args[_i] = arguments[_i];
|
|
203
|
-
}
|
|
204
|
-
var parentSpan = plugin._getParentSpan(this, AttributeNames.MOUNTING_SPAN);
|
|
205
|
-
var apply = plugin._instrumentFunction(this, 'componentDidMount', parentSpan, function () {
|
|
206
|
-
return original.apply(_this, args);
|
|
173
|
+
_patchComponentDidMount() {
|
|
174
|
+
return (original) => {
|
|
175
|
+
const plugin = this;
|
|
176
|
+
return function patchComponentDidMount(...args) {
|
|
177
|
+
const parentSpan = plugin._getParentSpan(this, AttributeNames.MOUNTING_SPAN);
|
|
178
|
+
const apply = plugin._instrumentFunction(this, 'componentDidMount', parentSpan, () => {
|
|
179
|
+
return original.apply(this, args);
|
|
207
180
|
});
|
|
208
181
|
plugin._endParentSpan(this);
|
|
209
182
|
return apply;
|
|
210
183
|
};
|
|
211
184
|
};
|
|
212
|
-
}
|
|
185
|
+
}
|
|
213
186
|
/**
|
|
214
187
|
* Patches the setState function
|
|
215
188
|
*/
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
224
|
-
args[_i] = arguments[_i];
|
|
225
|
-
}
|
|
226
|
-
var parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
227
|
-
return plugin._instrumentFunction(this, 'setState()', parentSpan, function () {
|
|
228
|
-
return original.apply(_this, args);
|
|
189
|
+
_patchSetState() {
|
|
190
|
+
return (original) => {
|
|
191
|
+
const plugin = this;
|
|
192
|
+
return function patchSetState(...args) {
|
|
193
|
+
const parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
194
|
+
return plugin._instrumentFunction(this, 'setState()', parentSpan, () => {
|
|
195
|
+
return original.apply(this, args);
|
|
229
196
|
});
|
|
230
197
|
};
|
|
231
198
|
};
|
|
232
|
-
}
|
|
199
|
+
}
|
|
233
200
|
/**
|
|
234
201
|
* Patches the forceUpdate function
|
|
235
202
|
*/
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
244
|
-
args[_i] = arguments[_i];
|
|
245
|
-
}
|
|
246
|
-
var parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
247
|
-
return plugin._instrumentFunction(this, 'forceUpdate()', parentSpan, function () {
|
|
248
|
-
return original.apply(_this, args);
|
|
203
|
+
_patchForceUpdate() {
|
|
204
|
+
return (original) => {
|
|
205
|
+
const plugin = this;
|
|
206
|
+
return function patchForceUpdate(...args) {
|
|
207
|
+
const parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
208
|
+
return plugin._instrumentFunction(this, 'forceUpdate()', parentSpan, () => {
|
|
209
|
+
return original.apply(this, args);
|
|
249
210
|
});
|
|
250
211
|
};
|
|
251
212
|
};
|
|
252
|
-
}
|
|
213
|
+
}
|
|
253
214
|
/**
|
|
254
215
|
* Patches the shouldComponentUpdate lifecycle method
|
|
255
216
|
*/
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
264
|
-
args[_i] = arguments[_i];
|
|
265
|
-
}
|
|
266
|
-
var parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
267
|
-
var apply = plugin._instrumentFunction(this, 'shouldComponentUpdate', parentSpan, function () {
|
|
268
|
-
return original.apply(_this, args);
|
|
217
|
+
_patchShouldComponentUpdate() {
|
|
218
|
+
return (original) => {
|
|
219
|
+
const plugin = this;
|
|
220
|
+
return function patchShouldComponentUpdate(...args) {
|
|
221
|
+
const parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
222
|
+
const apply = plugin._instrumentFunction(this, 'shouldComponentUpdate', parentSpan, () => {
|
|
223
|
+
return original.apply(this, args);
|
|
269
224
|
});
|
|
270
225
|
// if shouldComponentUpdate returns false, the component does not get
|
|
271
226
|
// updated and no other lifecycle methods get called
|
|
@@ -275,75 +230,57 @@ var BaseOpenTelemetryComponent = /** @class */ (function (_super) {
|
|
|
275
230
|
return apply;
|
|
276
231
|
};
|
|
277
232
|
};
|
|
278
|
-
}
|
|
233
|
+
}
|
|
279
234
|
/**
|
|
280
235
|
* Patches the shouldComponentUpdate lifecycle method
|
|
281
236
|
*/
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
290
|
-
args[_i] = arguments[_i];
|
|
291
|
-
}
|
|
292
|
-
var parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
293
|
-
return plugin._instrumentFunction(this, 'getSnapshotBeforeUpdate', parentSpan, function () {
|
|
294
|
-
return original.apply(_this, args);
|
|
237
|
+
_patchGetSnapshotBeforeUpdate() {
|
|
238
|
+
return (original) => {
|
|
239
|
+
const plugin = this;
|
|
240
|
+
return function patchGetSnapshotBeforeUpdate(...args) {
|
|
241
|
+
const parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
242
|
+
return plugin._instrumentFunction(this, 'getSnapshotBeforeUpdate', parentSpan, () => {
|
|
243
|
+
return original.apply(this, args);
|
|
295
244
|
});
|
|
296
245
|
};
|
|
297
246
|
};
|
|
298
|
-
}
|
|
247
|
+
}
|
|
299
248
|
/**
|
|
300
249
|
* Patches the componentDidUpdate lifecycle method
|
|
301
250
|
*/
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
310
|
-
args[_i] = arguments[_i];
|
|
311
|
-
}
|
|
312
|
-
var parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
313
|
-
var apply = plugin._instrumentFunction(this, 'componentDidUpdate', parentSpan, function () {
|
|
314
|
-
return original.apply(_this, args);
|
|
251
|
+
_patchComponentDidUpdate() {
|
|
252
|
+
return (original) => {
|
|
253
|
+
const plugin = this;
|
|
254
|
+
return function patchComponentDidUpdate(...args) {
|
|
255
|
+
const parentSpan = plugin._getParentSpan(this, AttributeNames.UPDATING_SPAN);
|
|
256
|
+
const apply = plugin._instrumentFunction(this, 'componentDidUpdate', parentSpan, () => {
|
|
257
|
+
return original.apply(this, args);
|
|
315
258
|
});
|
|
316
259
|
plugin._endParentSpan(this);
|
|
317
260
|
return apply;
|
|
318
261
|
};
|
|
319
262
|
};
|
|
320
|
-
}
|
|
263
|
+
}
|
|
321
264
|
/**
|
|
322
265
|
* Patches the componentWillUnmount lifecycle method
|
|
323
266
|
*/
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
332
|
-
args[_i] = arguments[_i];
|
|
333
|
-
}
|
|
334
|
-
var parentSpan = plugin._getParentSpan(this, AttributeNames.UNMOUNTING_SPAN);
|
|
335
|
-
var apply = plugin._instrumentFunction(this, 'componentWillUnmount', parentSpan, function () {
|
|
336
|
-
return original.apply(_this, args);
|
|
267
|
+
_patchComponentWillUnmount() {
|
|
268
|
+
return (original) => {
|
|
269
|
+
const plugin = this;
|
|
270
|
+
return function patchComponentWillUnmount(...args) {
|
|
271
|
+
const parentSpan = plugin._getParentSpan(this, AttributeNames.UNMOUNTING_SPAN);
|
|
272
|
+
const apply = plugin._instrumentFunction(this, 'componentWillUnmount', parentSpan, () => {
|
|
273
|
+
return original.apply(this, args);
|
|
337
274
|
});
|
|
338
275
|
plugin._endParentSpan(this);
|
|
339
276
|
return apply;
|
|
340
277
|
};
|
|
341
278
|
};
|
|
342
|
-
}
|
|
279
|
+
}
|
|
343
280
|
/**
|
|
344
281
|
* patch function which wraps all the lifecycle methods
|
|
345
282
|
*/
|
|
346
|
-
|
|
283
|
+
patch() {
|
|
347
284
|
BaseOpenTelemetryComponent._logger.debug('applying patch to', this.moduleName, PACKAGE_VERSION);
|
|
348
285
|
if (isWrapped(this.render)) {
|
|
349
286
|
shimmer.unwrap(this, 'render');
|
|
@@ -379,32 +316,32 @@ var BaseOpenTelemetryComponent = /** @class */ (function (_super) {
|
|
|
379
316
|
}
|
|
380
317
|
// Lifecycle methods must exist when patching, even if not defined in component
|
|
381
318
|
if (!this.render) {
|
|
382
|
-
this.render =
|
|
319
|
+
this.render = () => {
|
|
383
320
|
return null;
|
|
384
321
|
};
|
|
385
322
|
}
|
|
386
323
|
if (!this.componentDidMount) {
|
|
387
|
-
this.componentDidMount =
|
|
324
|
+
this.componentDidMount = () => {
|
|
388
325
|
return;
|
|
389
326
|
};
|
|
390
327
|
}
|
|
391
328
|
if (!this.shouldComponentUpdate) {
|
|
392
|
-
this.shouldComponentUpdate =
|
|
329
|
+
this.shouldComponentUpdate = () => {
|
|
393
330
|
return true;
|
|
394
331
|
};
|
|
395
332
|
}
|
|
396
333
|
if (!this.getSnapshotBeforeUpdate) {
|
|
397
|
-
this.getSnapshotBeforeUpdate =
|
|
334
|
+
this.getSnapshotBeforeUpdate = () => {
|
|
398
335
|
return null;
|
|
399
336
|
};
|
|
400
337
|
}
|
|
401
338
|
if (!this.componentDidUpdate) {
|
|
402
|
-
this.componentDidUpdate =
|
|
339
|
+
this.componentDidUpdate = () => {
|
|
403
340
|
return;
|
|
404
341
|
};
|
|
405
342
|
}
|
|
406
343
|
if (!this.componentWillUnmount) {
|
|
407
|
-
this.componentWillUnmount =
|
|
344
|
+
this.componentWillUnmount = () => {
|
|
408
345
|
return;
|
|
409
346
|
};
|
|
410
347
|
}
|
|
@@ -416,11 +353,11 @@ var BaseOpenTelemetryComponent = /** @class */ (function (_super) {
|
|
|
416
353
|
shimmer.wrap(this, 'getSnapshotBeforeUpdate', this._patchGetSnapshotBeforeUpdate());
|
|
417
354
|
shimmer.wrap(this, 'componentDidUpdate', this._patchComponentDidUpdate());
|
|
418
355
|
shimmer.wrap(this, 'componentWillUnmount', this._patchComponentWillUnmount());
|
|
419
|
-
}
|
|
356
|
+
}
|
|
420
357
|
/**
|
|
421
358
|
* unpatch function to unwrap all the lifecycle methods
|
|
422
359
|
*/
|
|
423
|
-
|
|
360
|
+
unpatch() {
|
|
424
361
|
BaseOpenTelemetryComponent._logger.debug('removing patch from', this.moduleName, PACKAGE_VERSION);
|
|
425
362
|
shimmer.unwrap(this, 'render');
|
|
426
363
|
shimmer.unwrap(this, 'componentDidMount');
|
|
@@ -431,9 +368,7 @@ var BaseOpenTelemetryComponent = /** @class */ (function (_super) {
|
|
|
431
368
|
shimmer.unwrap(this, 'componentDidUpdate');
|
|
432
369
|
shimmer.unwrap(this, 'componentWillUnmount');
|
|
433
370
|
this._parentSpanMap = new WeakMap();
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
return BaseOpenTelemetryComponent;
|
|
437
|
-
}(React.Component));
|
|
371
|
+
}
|
|
372
|
+
}
|
|
438
373
|
export { BaseOpenTelemetryComponent };
|
|
439
374
|
//# sourceMappingURL=BaseOpenTelemetryComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseOpenTelemetryComponent.js","sourceRoot":"","sources":["../../src/BaseOpenTelemetryComponent.ts"],"names":[],"mappings":"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","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 { isWrapped } from '@opentelemetry/instrumentation';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\n/** @knipignore */\nimport { PACKAGE_VERSION } from './version';\nimport {\n RenderFunction,\n ComponentDidMountFunction,\n ComponentDidUpdateFunction,\n ShouldComponentUpdateFunction,\n SetStateFunction,\n ForceUpdateFunction,\n GetSnapshotBeforeUpdateFunction,\n ComponentWillUnmountFunction,\n} from './internal-types';\n\n/**\n * This class is the base component for a React component with lifecycle instrumentation\n */\nexport class BaseOpenTelemetryComponent extends React.Component {\n readonly component: string = 'react-load';\n moduleName = this.component;\n private _parentSpanMap: WeakMap<React.Component, api.Span>;\n private static _tracer: api.Tracer;\n private static _logger: api.DiagLogger = api.diag;\n\n /**\n * @param props Props of the React component\n */\n constructor(props: Readonly<any>) {\n super(props);\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n this.patch();\n }\n\n /**\n * Sets the tracer for all components being instrumented\n * @param name Name of tracer\n * @param version Version of tracer, this is optional. When not provided it will use the latest.\n */\n static setTracer(name: string, version?: string): void {\n BaseOpenTelemetryComponent._tracer = api.trace.getTracer(\n name,\n version ? version : PACKAGE_VERSION\n );\n }\n\n /**\n * Sets the logger for all components being instrumented\n * @param logger\n */\n static setLogger(logger: api.DiagLogger): void {\n api.diag.setLogger(logger);\n BaseOpenTelemetryComponent._logger = logger;\n }\n\n /**\n * Creates a new span as a child of the current parent span.\n * If parent span is undefined, just the child is created.\n * @param react React component currently being instrumented\n * @param name Name of span\n * @param parentSpan parent span\n */\n private _createSpanWithParent(\n react: React.Component,\n name: string,\n parentSpan: api.Span\n ): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(\n name,\n {\n attributes: this._getAttributes(react),\n },\n parentSpan\n ? api.trace.setSpan(api.context.active(), parentSpan)\n : undefined\n );\n }\n\n /**\n * Creates a new span\n * @param react React component currently being instrumented\n * @param name Name of span\n */\n private _createSpan(react: React.Component, name: string): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(name, {\n attributes: this._getAttributes(react),\n });\n }\n\n /**\n * Provides instrumentation for a function\n * @param react React component currently instrumenting.\n * @param spanName Name to set the span of the instrumented function to.\n * @param original Original function currently being wrapped.\n * @parentName Name to set parent span to on error.\n */\n private _instrumentFunction(\n react: React.Component,\n spanName: string,\n parent: api.Span,\n original: any\n ) {\n const span = this._createSpanWithParent(react, spanName, parent);\n let wasError = false;\n try {\n return api.context.with(\n api.trace.setSpan(api.context.active(), span),\n () => {\n return original();\n }\n );\n } catch (err: any) {\n span.setAttribute(AttributeNames.REACT_ERROR, err.stack);\n wasError = true;\n throw err;\n } finally {\n span.end();\n if (wasError) {\n this._endParentSpan(react);\n }\n }\n }\n\n /**\n * Ends the current parent span.\n * @param react React component parent span belongs to.\n */\n private _endParentSpan(react: React.Component) {\n const parentSpan = this._parentSpanMap.get(react);\n if (parentSpan) {\n parentSpan.end();\n this._parentSpanMap.delete(react);\n }\n }\n\n /**\n * Returns attributes object for spans\n * @param react React component currently being instrumented\n **/\n private _getAttributes(react: React.Component) {\n let state: string;\n try {\n state = JSON.stringify(react.state);\n } catch {\n state = '{\"message\": \"state could not be turned into string\"}';\n }\n return {\n [AttributeNames.LOCATION_URL]: window.location.href,\n [AttributeNames.REACT_NAME]: react.constructor.name,\n [AttributeNames.REACT_STATE]: state,\n };\n }\n\n /**\n * This function returns a parent span. If the parent doesn't\n * exist, the function creates one\n * @param react React component parent span belongs to.\n */\n private _getParentSpan(react: React.Component, parentName: string): api.Span {\n const parentSpan: api.Span | undefined = this._parentSpanMap.get(react);\n if (!parentSpan) {\n const span = this._createSpan(react, parentName);\n this._parentSpanMap.set(react, span);\n }\n return this._parentSpanMap.get(react)!;\n }\n\n /**\n * Patches the render lifecycle method\n */\n private _patchRender() {\n return (original: RenderFunction): RenderFunction => {\n const plugin = this;\n return function patchRender(\n this: React.Component,\n ...args\n ): React.ReactNode {\n // Render is the first method in the mounting flow, if a parent span wasn't created already then we're in the mounting flow\n let parentSpan: api.Span;\n if (!plugin._parentSpanMap.get(this)) {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n } else {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n }\n\n return plugin._instrumentFunction(this, 'render', parentSpan, () => {\n return original!.apply(this, args);\n });\n };\n };\n }\n\n /**\n * Patches the componentDidMount lifecycle method\n */\n private _patchComponentDidMount() {\n return (original: ComponentDidMountFunction): ComponentDidMountFunction => {\n const plugin = this;\n\n return function patchComponentDidMount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidMount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the setState function\n */\n private _patchSetState() {\n return (original: SetStateFunction): SetStateFunction => {\n const plugin = this;\n return function patchSetState(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'setState()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the forceUpdate function\n */\n private _patchForceUpdate() {\n return (original: ForceUpdateFunction): ForceUpdateFunction => {\n const plugin = this;\n return function patchForceUpdate(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'forceUpdate()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchShouldComponentUpdate() {\n return (\n original: ShouldComponentUpdateFunction\n ): ShouldComponentUpdateFunction => {\n const plugin = this;\n\n return function patchShouldComponentUpdate(\n this: React.Component,\n ...args\n ): boolean {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'shouldComponentUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n // if shouldComponentUpdate returns false, the component does not get\n // updated and no other lifecycle methods get called\n if (!apply) {\n plugin._endParentSpan(this);\n }\n\n return apply;\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchGetSnapshotBeforeUpdate() {\n return (\n original: GetSnapshotBeforeUpdateFunction\n ): GetSnapshotBeforeUpdateFunction => {\n const plugin = this;\n\n return function patchGetSnapshotBeforeUpdate(\n this: React.Component,\n ...args\n ): any {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'getSnapshotBeforeUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the componentDidUpdate lifecycle method\n */\n private _patchComponentDidUpdate() {\n return (\n original: ComponentDidUpdateFunction\n ): ComponentDidUpdateFunction => {\n const plugin = this;\n\n return function patchComponentDidUpdate(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the componentWillUnmount lifecycle method\n */\n private _patchComponentWillUnmount() {\n return (\n original: ComponentWillUnmountFunction\n ): ComponentWillUnmountFunction => {\n const plugin = this;\n\n return function patchComponentWillUnmount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UNMOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentWillUnmount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * patch function which wraps all the lifecycle methods\n */\n public patch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'applying patch to',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n if (isWrapped(this.render)) {\n shimmer.unwrap(this, 'render');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method render'\n );\n }\n if (isWrapped(this.componentDidMount)) {\n shimmer.unwrap(this, 'componentDidMount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidMount'\n );\n }\n if (isWrapped(this.shouldComponentUpdate)) {\n shimmer.unwrap(this, 'shouldComponentUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method shouldComponentUpdate'\n );\n }\n if (isWrapped(this.getSnapshotBeforeUpdate)) {\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method getSnapshotBeforeUpdate'\n );\n }\n if (isWrapped(this.setState)) {\n shimmer.unwrap(this, 'setState');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method setState'\n );\n }\n if (isWrapped(this.forceUpdate)) {\n shimmer.unwrap(this, 'forceUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method forceUpdate'\n );\n }\n if (isWrapped(this.componentDidUpdate)) {\n shimmer.unwrap(this, 'componentDidUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidUpdate'\n );\n }\n if (isWrapped(this.componentWillUnmount)) {\n shimmer.unwrap(this, 'componentWillUnmount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentWillUnmount'\n );\n }\n\n // Lifecycle methods must exist when patching, even if not defined in component\n if (!this.render) {\n this.render = () => {\n return null;\n };\n }\n if (!this.componentDidMount) {\n this.componentDidMount = () => {\n return;\n };\n }\n if (!this.shouldComponentUpdate) {\n this.shouldComponentUpdate = () => {\n return true;\n };\n }\n if (!this.getSnapshotBeforeUpdate) {\n this.getSnapshotBeforeUpdate = () => {\n return null;\n };\n }\n if (!this.componentDidUpdate) {\n this.componentDidUpdate = () => {\n return;\n };\n }\n if (!this.componentWillUnmount) {\n this.componentWillUnmount = () => {\n return;\n };\n }\n\n shimmer.wrap(this, 'render', this._patchRender());\n shimmer.wrap(this, 'componentDidMount', this._patchComponentDidMount());\n shimmer.wrap(this, 'setState', this._patchSetState());\n shimmer.wrap(this, 'forceUpdate', this._patchForceUpdate());\n shimmer.wrap(\n this,\n 'shouldComponentUpdate',\n this._patchShouldComponentUpdate()\n );\n shimmer.wrap(\n this,\n 'getSnapshotBeforeUpdate',\n this._patchGetSnapshotBeforeUpdate()\n );\n shimmer.wrap(this, 'componentDidUpdate', this._patchComponentDidUpdate());\n shimmer.wrap(\n this,\n 'componentWillUnmount',\n this._patchComponentWillUnmount()\n );\n }\n\n /**\n * unpatch function to unwrap all the lifecycle methods\n */\n public unpatch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'removing patch from',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n shimmer.unwrap(this, 'render');\n\n shimmer.unwrap(this, 'componentDidMount');\n\n shimmer.unwrap(this, 'setState');\n shimmer.unwrap(this, 'forceUpdate');\n shimmer.unwrap(this, 'shouldComponentUpdate');\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n shimmer.unwrap(this, 'componentDidUpdate');\n\n shimmer.unwrap(this, 'componentWillUnmount');\n\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BaseOpenTelemetryComponent.js","sourceRoot":"","sources":["../../src/BaseOpenTelemetryComponent.ts"],"names":[],"mappings":"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","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 { isWrapped } from '@opentelemetry/instrumentation';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\n/** @knipignore */\nimport { PACKAGE_VERSION } from './version';\nimport {\n RenderFunction,\n ComponentDidMountFunction,\n ComponentDidUpdateFunction,\n ShouldComponentUpdateFunction,\n SetStateFunction,\n ForceUpdateFunction,\n GetSnapshotBeforeUpdateFunction,\n ComponentWillUnmountFunction,\n} from './internal-types';\n\n/**\n * This class is the base component for a React component with lifecycle instrumentation\n */\nexport class BaseOpenTelemetryComponent extends React.Component {\n readonly component: string = 'react-load';\n moduleName = this.component;\n private _parentSpanMap: WeakMap<React.Component, api.Span>;\n private static _tracer: api.Tracer;\n private static _logger: api.DiagLogger = api.diag;\n\n /**\n * @param props Props of the React component\n */\n constructor(props: Readonly<any>) {\n super(props);\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n this.patch();\n }\n\n /**\n * Sets the tracer for all components being instrumented\n * @param name Name of tracer\n * @param version Version of tracer, this is optional. When not provided it will use the latest.\n */\n static setTracer(name: string, version?: string): void {\n BaseOpenTelemetryComponent._tracer = api.trace.getTracer(\n name,\n version ? version : PACKAGE_VERSION\n );\n }\n\n /**\n * Sets the logger for all components being instrumented\n * @param logger\n */\n static setLogger(logger: api.DiagLogger): void {\n api.diag.setLogger(logger);\n BaseOpenTelemetryComponent._logger = logger;\n }\n\n /**\n * Creates a new span as a child of the current parent span.\n * If parent span is undefined, just the child is created.\n * @param react React component currently being instrumented\n * @param name Name of span\n * @param parentSpan parent span\n */\n private _createSpanWithParent(\n react: React.Component,\n name: string,\n parentSpan: api.Span\n ): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(\n name,\n {\n attributes: this._getAttributes(react),\n },\n parentSpan\n ? api.trace.setSpan(api.context.active(), parentSpan)\n : undefined\n );\n }\n\n /**\n * Creates a new span\n * @param react React component currently being instrumented\n * @param name Name of span\n */\n private _createSpan(react: React.Component, name: string): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(name, {\n attributes: this._getAttributes(react),\n });\n }\n\n /**\n * Provides instrumentation for a function\n * @param react React component currently instrumenting.\n * @param spanName Name to set the span of the instrumented function to.\n * @param original Original function currently being wrapped.\n * @parentName Name to set parent span to on error.\n */\n private _instrumentFunction(\n react: React.Component,\n spanName: string,\n parent: api.Span,\n original: any\n ) {\n const span = this._createSpanWithParent(react, spanName, parent);\n let wasError = false;\n try {\n return api.context.with(\n api.trace.setSpan(api.context.active(), span),\n () => {\n return original();\n }\n );\n } catch (err: any) {\n span.setAttribute(AttributeNames.REACT_ERROR, err.stack);\n wasError = true;\n throw err;\n } finally {\n span.end();\n if (wasError) {\n this._endParentSpan(react);\n }\n }\n }\n\n /**\n * Ends the current parent span.\n * @param react React component parent span belongs to.\n */\n private _endParentSpan(react: React.Component) {\n const parentSpan = this._parentSpanMap.get(react);\n if (parentSpan) {\n parentSpan.end();\n this._parentSpanMap.delete(react);\n }\n }\n\n /**\n * Returns attributes object for spans\n * @param react React component currently being instrumented\n **/\n private _getAttributes(react: React.Component) {\n let state: string;\n try {\n state = JSON.stringify(react.state);\n } catch {\n state = '{\"message\": \"state could not be turned into string\"}';\n }\n return {\n [AttributeNames.LOCATION_URL]: window.location.href,\n [AttributeNames.REACT_NAME]: react.constructor.name,\n [AttributeNames.REACT_STATE]: state,\n };\n }\n\n /**\n * This function returns a parent span. If the parent doesn't\n * exist, the function creates one\n * @param react React component parent span belongs to.\n */\n private _getParentSpan(react: React.Component, parentName: string): api.Span {\n const parentSpan: api.Span | undefined = this._parentSpanMap.get(react);\n if (!parentSpan) {\n const span = this._createSpan(react, parentName);\n this._parentSpanMap.set(react, span);\n }\n return this._parentSpanMap.get(react)!;\n }\n\n /**\n * Patches the render lifecycle method\n */\n private _patchRender() {\n return (original: RenderFunction): RenderFunction => {\n const plugin = this;\n return function patchRender(\n this: React.Component,\n ...args\n ): React.ReactNode {\n // Render is the first method in the mounting flow, if a parent span wasn't created already then we're in the mounting flow\n let parentSpan: api.Span;\n if (!plugin._parentSpanMap.get(this)) {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n } else {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n }\n\n return plugin._instrumentFunction(this, 'render', parentSpan, () => {\n return original!.apply(this, args);\n });\n };\n };\n }\n\n /**\n * Patches the componentDidMount lifecycle method\n */\n private _patchComponentDidMount() {\n return (original: ComponentDidMountFunction): ComponentDidMountFunction => {\n const plugin = this;\n\n return function patchComponentDidMount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidMount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the setState function\n */\n private _patchSetState() {\n return (original: SetStateFunction): SetStateFunction => {\n const plugin = this;\n return function patchSetState(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'setState()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the forceUpdate function\n */\n private _patchForceUpdate() {\n return (original: ForceUpdateFunction): ForceUpdateFunction => {\n const plugin = this;\n return function patchForceUpdate(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'forceUpdate()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchShouldComponentUpdate() {\n return (\n original: ShouldComponentUpdateFunction\n ): ShouldComponentUpdateFunction => {\n const plugin = this;\n\n return function patchShouldComponentUpdate(\n this: React.Component,\n ...args\n ): boolean {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'shouldComponentUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n // if shouldComponentUpdate returns false, the component does not get\n // updated and no other lifecycle methods get called\n if (!apply) {\n plugin._endParentSpan(this);\n }\n\n return apply;\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchGetSnapshotBeforeUpdate() {\n return (\n original: GetSnapshotBeforeUpdateFunction\n ): GetSnapshotBeforeUpdateFunction => {\n const plugin = this;\n\n return function patchGetSnapshotBeforeUpdate(\n this: React.Component,\n ...args\n ): any {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'getSnapshotBeforeUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the componentDidUpdate lifecycle method\n */\n private _patchComponentDidUpdate() {\n return (\n original: ComponentDidUpdateFunction\n ): ComponentDidUpdateFunction => {\n const plugin = this;\n\n return function patchComponentDidUpdate(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the componentWillUnmount lifecycle method\n */\n private _patchComponentWillUnmount() {\n return (\n original: ComponentWillUnmountFunction\n ): ComponentWillUnmountFunction => {\n const plugin = this;\n\n return function patchComponentWillUnmount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UNMOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentWillUnmount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * patch function which wraps all the lifecycle methods\n */\n public patch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'applying patch to',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n if (isWrapped(this.render)) {\n shimmer.unwrap(this, 'render');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method render'\n );\n }\n if (isWrapped(this.componentDidMount)) {\n shimmer.unwrap(this, 'componentDidMount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidMount'\n );\n }\n if (isWrapped(this.shouldComponentUpdate)) {\n shimmer.unwrap(this, 'shouldComponentUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method shouldComponentUpdate'\n );\n }\n if (isWrapped(this.getSnapshotBeforeUpdate)) {\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method getSnapshotBeforeUpdate'\n );\n }\n if (isWrapped(this.setState)) {\n shimmer.unwrap(this, 'setState');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method setState'\n );\n }\n if (isWrapped(this.forceUpdate)) {\n shimmer.unwrap(this, 'forceUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method forceUpdate'\n );\n }\n if (isWrapped(this.componentDidUpdate)) {\n shimmer.unwrap(this, 'componentDidUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidUpdate'\n );\n }\n if (isWrapped(this.componentWillUnmount)) {\n shimmer.unwrap(this, 'componentWillUnmount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentWillUnmount'\n );\n }\n\n // Lifecycle methods must exist when patching, even if not defined in component\n if (!this.render) {\n this.render = () => {\n return null;\n };\n }\n if (!this.componentDidMount) {\n this.componentDidMount = () => {\n return;\n };\n }\n if (!this.shouldComponentUpdate) {\n this.shouldComponentUpdate = () => {\n return true;\n };\n }\n if (!this.getSnapshotBeforeUpdate) {\n this.getSnapshotBeforeUpdate = () => {\n return null;\n };\n }\n if (!this.componentDidUpdate) {\n this.componentDidUpdate = () => {\n return;\n };\n }\n if (!this.componentWillUnmount) {\n this.componentWillUnmount = () => {\n return;\n };\n }\n\n shimmer.wrap(this, 'render', this._patchRender());\n shimmer.wrap(this, 'componentDidMount', this._patchComponentDidMount());\n shimmer.wrap(this, 'setState', this._patchSetState());\n shimmer.wrap(this, 'forceUpdate', this._patchForceUpdate());\n shimmer.wrap(\n this,\n 'shouldComponentUpdate',\n this._patchShouldComponentUpdate()\n );\n shimmer.wrap(\n this,\n 'getSnapshotBeforeUpdate',\n this._patchGetSnapshotBeforeUpdate()\n );\n shimmer.wrap(this, 'componentDidUpdate', this._patchComponentDidUpdate());\n shimmer.wrap(\n this,\n 'componentWillUnmount',\n this._patchComponentWillUnmount()\n );\n }\n\n /**\n * unpatch function to unwrap all the lifecycle methods\n */\n public unpatch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'removing patch from',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n shimmer.unwrap(this, 'render');\n\n shimmer.unwrap(this, 'componentDidMount');\n\n shimmer.unwrap(this, 'setState');\n shimmer.unwrap(this, 'forceUpdate');\n shimmer.unwrap(this, 'shouldComponentUpdate');\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n shimmer.unwrap(this, 'componentDidUpdate');\n\n shimmer.unwrap(this, 'componentWillUnmount');\n\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
2
|
+
export type RenderFunction = () => React.ReactNode;
|
|
3
|
+
export type ComponentDidMountFunction = (() => void) | undefined;
|
|
4
|
+
export type ComponentDidUpdateFunction = ((prevProps: Readonly<any>, prevState: Readonly<any>, snapshot?: any) => void) | undefined;
|
|
5
|
+
export type ShouldComponentUpdateFunction = ((nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any) => boolean) | undefined;
|
|
6
|
+
export type SetStateFunction = <K extends never>(state: any | ((prevState: Readonly<any>, props: Readonly<any>) => any | Pick<any, K> | null) | Pick<any, K> | null, callback?: (() => void) | undefined) => void;
|
|
7
|
+
export type ForceUpdateFunction = (callback?: (() => void) | undefined) => void;
|
|
8
|
+
export type GetSnapshotBeforeUpdateFunction = ((prevProps: Readonly<any>, prevState: Readonly<any>) => any) | undefined;
|
|
9
|
+
export type ComponentWillUnmountFunction = (() => void) | undefined;
|
|
10
10
|
//# sourceMappingURL=internal-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,
|
|
1
|
+
{"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;AAKnD,MAAM,MAAM,yBAAyB,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;AAKjE,MAAM,MAAM,0BAA0B,GAClC,CAAC,CACC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,QAAQ,CAAC,EAAE,GAAG,KACX,IAAI,CAAC,GACV,SAAS,CAAC;AAKd,MAAM,MAAM,6BAA6B,GACrC,CAAC,CACC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,WAAW,EAAE,GAAG,KACb,OAAO,CAAC,GACb,SAAS,CAAC;AAKd,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,KAAK,EAC7C,KAAK,EACD,GAAG,GACH,CAAC,CACC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KACjB,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAC/B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GACZ,IAAI,EACR,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,KAChC,IAAI,CAAC;AAKV,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;AAKhF,MAAM,MAAM,+BAA+B,GACvC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAC7D,SAAS,CAAC;AAKd,MAAM,MAAM,4BAA4B,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC"}
|
package/build/esm/version.d.ts
CHANGED
package/build/esm/version.js
CHANGED
|
@@ -14,6 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
// this is autogenerated file, see scripts/version-update.js
|
|
17
|
-
export
|
|
18
|
-
export
|
|
17
|
+
export const PACKAGE_VERSION = '0.33.0';
|
|
18
|
+
export const PACKAGE_NAME = '@opentelemetry/plugin-react-load';
|
|
19
19
|
//# sourceMappingURL=version.js.map
|
package/build/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,kCAAkC,CAAC","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\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.33.0';\nexport const PACKAGE_NAME = '@opentelemetry/plugin-react-load';\n"]}
|
|
@@ -23,14 +23,17 @@ import { PACKAGE_VERSION } from './version';
|
|
|
23
23
|
/**
|
|
24
24
|
* This class is the base component for a React component with lifecycle instrumentation
|
|
25
25
|
*/
|
|
26
|
-
|
|
26
|
+
class BaseOpenTelemetryComponent extends React.Component {
|
|
27
|
+
component = 'react-load';
|
|
28
|
+
moduleName = this.component;
|
|
29
|
+
_parentSpanMap;
|
|
30
|
+
static _tracer;
|
|
31
|
+
static _logger = api.diag;
|
|
27
32
|
/**
|
|
28
33
|
* @param props Props of the React component
|
|
29
34
|
*/
|
|
30
35
|
constructor(props) {
|
|
31
36
|
super(props);
|
|
32
|
-
this.component = 'react-load';
|
|
33
|
-
this.moduleName = this.component;
|
|
34
37
|
this._parentSpanMap = new WeakMap();
|
|
35
38
|
this.patch();
|
|
36
39
|
}
|
|
@@ -121,7 +124,7 @@ export class BaseOpenTelemetryComponent extends React.Component {
|
|
|
121
124
|
try {
|
|
122
125
|
state = JSON.stringify(react.state);
|
|
123
126
|
}
|
|
124
|
-
catch
|
|
127
|
+
catch {
|
|
125
128
|
state = '{"message": "state could not be turned into string"}';
|
|
126
129
|
}
|
|
127
130
|
return {
|
|
@@ -367,5 +370,5 @@ export class BaseOpenTelemetryComponent extends React.Component {
|
|
|
367
370
|
this._parentSpanMap = new WeakMap();
|
|
368
371
|
}
|
|
369
372
|
}
|
|
370
|
-
BaseOpenTelemetryComponent
|
|
373
|
+
export { BaseOpenTelemetryComponent };
|
|
371
374
|
//# sourceMappingURL=BaseOpenTelemetryComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseOpenTelemetryComponent.js","sourceRoot":"","sources":["../../src/BaseOpenTelemetryComponent.ts"],"names":[],"mappings":"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","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 { isWrapped } from '@opentelemetry/instrumentation';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\n/** @knipignore */\nimport { PACKAGE_VERSION } from './version';\nimport {\n RenderFunction,\n ComponentDidMountFunction,\n ComponentDidUpdateFunction,\n ShouldComponentUpdateFunction,\n SetStateFunction,\n ForceUpdateFunction,\n GetSnapshotBeforeUpdateFunction,\n ComponentWillUnmountFunction,\n} from './internal-types';\n\n/**\n * This class is the base component for a React component with lifecycle instrumentation\n */\nexport class BaseOpenTelemetryComponent extends React.Component {\n readonly component: string = 'react-load';\n moduleName = this.component;\n private _parentSpanMap: WeakMap<React.Component, api.Span>;\n private static _tracer: api.Tracer;\n private static _logger: api.DiagLogger = api.diag;\n\n /**\n * @param props Props of the React component\n */\n constructor(props: Readonly<any>) {\n super(props);\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n this.patch();\n }\n\n /**\n * Sets the tracer for all components being instrumented\n * @param name Name of tracer\n * @param version Version of tracer, this is optional. When not provided it will use the latest.\n */\n static setTracer(name: string, version?: string): void {\n BaseOpenTelemetryComponent._tracer = api.trace.getTracer(\n name,\n version ? version : PACKAGE_VERSION\n );\n }\n\n /**\n * Sets the logger for all components being instrumented\n * @param logger\n */\n static setLogger(logger: api.DiagLogger): void {\n api.diag.setLogger(logger);\n BaseOpenTelemetryComponent._logger = logger;\n }\n\n /**\n * Creates a new span as a child of the current parent span.\n * If parent span is undefined, just the child is created.\n * @param react React component currently being instrumented\n * @param name Name of span\n * @param parentSpan parent span\n */\n private _createSpanWithParent(\n react: React.Component,\n name: string,\n parentSpan: api.Span\n ): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(\n name,\n {\n attributes: this._getAttributes(react),\n },\n parentSpan\n ? api.trace.setSpan(api.context.active(), parentSpan)\n : undefined\n );\n }\n\n /**\n * Creates a new span\n * @param react React component currently being instrumented\n * @param name Name of span\n */\n private _createSpan(react: React.Component, name: string): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(name, {\n attributes: this._getAttributes(react),\n });\n }\n\n /**\n * Provides instrumentation for a function\n * @param react React component currently instrumenting.\n * @param spanName Name to set the span of the instrumented function to.\n * @param original Original function currently being wrapped.\n * @parentName Name to set parent span to on error.\n */\n private _instrumentFunction(\n react: React.Component,\n spanName: string,\n parent: api.Span,\n original: any\n ) {\n const span = this._createSpanWithParent(react, spanName, parent);\n let wasError = false;\n try {\n return api.context.with(\n api.trace.setSpan(api.context.active(), span),\n () => {\n return original();\n }\n );\n } catch (err: any) {\n span.setAttribute(AttributeNames.REACT_ERROR, err.stack);\n wasError = true;\n throw err;\n } finally {\n span.end();\n if (wasError) {\n this._endParentSpan(react);\n }\n }\n }\n\n /**\n * Ends the current parent span.\n * @param react React component parent span belongs to.\n */\n private _endParentSpan(react: React.Component) {\n const parentSpan = this._parentSpanMap.get(react);\n if (parentSpan) {\n parentSpan.end();\n this._parentSpanMap.delete(react);\n }\n }\n\n /**\n * Returns attributes object for spans\n * @param react React component currently being instrumented\n **/\n private _getAttributes(react: React.Component) {\n let state: string;\n try {\n state = JSON.stringify(react.state);\n } catch {\n state = '{\"message\": \"state could not be turned into string\"}';\n }\n return {\n [AttributeNames.LOCATION_URL]: window.location.href,\n [AttributeNames.REACT_NAME]: react.constructor.name,\n [AttributeNames.REACT_STATE]: state,\n };\n }\n\n /**\n * This function returns a parent span. If the parent doesn't\n * exist, the function creates one\n * @param react React component parent span belongs to.\n */\n private _getParentSpan(react: React.Component, parentName: string): api.Span {\n const parentSpan: api.Span | undefined = this._parentSpanMap.get(react);\n if (!parentSpan) {\n const span = this._createSpan(react, parentName);\n this._parentSpanMap.set(react, span);\n }\n return this._parentSpanMap.get(react)!;\n }\n\n /**\n * Patches the render lifecycle method\n */\n private _patchRender() {\n return (original: RenderFunction): RenderFunction => {\n const plugin = this;\n return function patchRender(\n this: React.Component,\n ...args\n ): React.ReactNode {\n // Render is the first method in the mounting flow, if a parent span wasn't created already then we're in the mounting flow\n let parentSpan: api.Span;\n if (!plugin._parentSpanMap.get(this)) {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n } else {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n }\n\n return plugin._instrumentFunction(this, 'render', parentSpan, () => {\n return original!.apply(this, args);\n });\n };\n };\n }\n\n /**\n * Patches the componentDidMount lifecycle method\n */\n private _patchComponentDidMount() {\n return (original: ComponentDidMountFunction): ComponentDidMountFunction => {\n const plugin = this;\n\n return function patchComponentDidMount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidMount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the setState function\n */\n private _patchSetState() {\n return (original: SetStateFunction): SetStateFunction => {\n const plugin = this;\n return function patchSetState(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'setState()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the forceUpdate function\n */\n private _patchForceUpdate() {\n return (original: ForceUpdateFunction): ForceUpdateFunction => {\n const plugin = this;\n return function patchForceUpdate(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'forceUpdate()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchShouldComponentUpdate() {\n return (\n original: ShouldComponentUpdateFunction\n ): ShouldComponentUpdateFunction => {\n const plugin = this;\n\n return function patchShouldComponentUpdate(\n this: React.Component,\n ...args\n ): boolean {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'shouldComponentUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n // if shouldComponentUpdate returns false, the component does not get\n // updated and no other lifecycle methods get called\n if (!apply) {\n plugin._endParentSpan(this);\n }\n\n return apply;\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchGetSnapshotBeforeUpdate() {\n return (\n original: GetSnapshotBeforeUpdateFunction\n ): GetSnapshotBeforeUpdateFunction => {\n const plugin = this;\n\n return function patchGetSnapshotBeforeUpdate(\n this: React.Component,\n ...args\n ): any {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'getSnapshotBeforeUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the componentDidUpdate lifecycle method\n */\n private _patchComponentDidUpdate() {\n return (\n original: ComponentDidUpdateFunction\n ): ComponentDidUpdateFunction => {\n const plugin = this;\n\n return function patchComponentDidUpdate(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the componentWillUnmount lifecycle method\n */\n private _patchComponentWillUnmount() {\n return (\n original: ComponentWillUnmountFunction\n ): ComponentWillUnmountFunction => {\n const plugin = this;\n\n return function patchComponentWillUnmount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UNMOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentWillUnmount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * patch function which wraps all the lifecycle methods\n */\n public patch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'applying patch to',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n if (isWrapped(this.render)) {\n shimmer.unwrap(this, 'render');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method render'\n );\n }\n if (isWrapped(this.componentDidMount)) {\n shimmer.unwrap(this, 'componentDidMount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidMount'\n );\n }\n if (isWrapped(this.shouldComponentUpdate)) {\n shimmer.unwrap(this, 'shouldComponentUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method shouldComponentUpdate'\n );\n }\n if (isWrapped(this.getSnapshotBeforeUpdate)) {\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method getSnapshotBeforeUpdate'\n );\n }\n if (isWrapped(this.setState)) {\n shimmer.unwrap(this, 'setState');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method setState'\n );\n }\n if (isWrapped(this.forceUpdate)) {\n shimmer.unwrap(this, 'forceUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method forceUpdate'\n );\n }\n if (isWrapped(this.componentDidUpdate)) {\n shimmer.unwrap(this, 'componentDidUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidUpdate'\n );\n }\n if (isWrapped(this.componentWillUnmount)) {\n shimmer.unwrap(this, 'componentWillUnmount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentWillUnmount'\n );\n }\n\n // Lifecycle methods must exist when patching, even if not defined in component\n if (!this.render) {\n this.render = () => {\n return null;\n };\n }\n if (!this.componentDidMount) {\n this.componentDidMount = () => {\n return;\n };\n }\n if (!this.shouldComponentUpdate) {\n this.shouldComponentUpdate = () => {\n return true;\n };\n }\n if (!this.getSnapshotBeforeUpdate) {\n this.getSnapshotBeforeUpdate = () => {\n return null;\n };\n }\n if (!this.componentDidUpdate) {\n this.componentDidUpdate = () => {\n return;\n };\n }\n if (!this.componentWillUnmount) {\n this.componentWillUnmount = () => {\n return;\n };\n }\n\n shimmer.wrap(this, 'render', this._patchRender());\n shimmer.wrap(this, 'componentDidMount', this._patchComponentDidMount());\n shimmer.wrap(this, 'setState', this._patchSetState());\n shimmer.wrap(this, 'forceUpdate', this._patchForceUpdate());\n shimmer.wrap(\n this,\n 'shouldComponentUpdate',\n this._patchShouldComponentUpdate()\n );\n shimmer.wrap(\n this,\n 'getSnapshotBeforeUpdate',\n this._patchGetSnapshotBeforeUpdate()\n );\n shimmer.wrap(this, 'componentDidUpdate', this._patchComponentDidUpdate());\n shimmer.wrap(\n this,\n 'componentWillUnmount',\n this._patchComponentWillUnmount()\n );\n }\n\n /**\n * unpatch function to unwrap all the lifecycle methods\n */\n public unpatch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'removing patch from',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n shimmer.unwrap(this, 'render');\n\n shimmer.unwrap(this, 'componentDidMount');\n\n shimmer.unwrap(this, 'setState');\n shimmer.unwrap(this, 'forceUpdate');\n shimmer.unwrap(this, 'shouldComponentUpdate');\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n shimmer.unwrap(this, 'componentDidUpdate');\n\n shimmer.unwrap(this, 'componentWillUnmount');\n\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BaseOpenTelemetryComponent.js","sourceRoot":"","sources":["../../src/BaseOpenTelemetryComponent.ts"],"names":[],"mappings":"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","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 { isWrapped } from '@opentelemetry/instrumentation';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\n/** @knipignore */\nimport { PACKAGE_VERSION } from './version';\nimport {\n RenderFunction,\n ComponentDidMountFunction,\n ComponentDidUpdateFunction,\n ShouldComponentUpdateFunction,\n SetStateFunction,\n ForceUpdateFunction,\n GetSnapshotBeforeUpdateFunction,\n ComponentWillUnmountFunction,\n} from './internal-types';\n\n/**\n * This class is the base component for a React component with lifecycle instrumentation\n */\nexport class BaseOpenTelemetryComponent extends React.Component {\n readonly component: string = 'react-load';\n moduleName = this.component;\n private _parentSpanMap: WeakMap<React.Component, api.Span>;\n private static _tracer: api.Tracer;\n private static _logger: api.DiagLogger = api.diag;\n\n /**\n * @param props Props of the React component\n */\n constructor(props: Readonly<any>) {\n super(props);\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n this.patch();\n }\n\n /**\n * Sets the tracer for all components being instrumented\n * @param name Name of tracer\n * @param version Version of tracer, this is optional. When not provided it will use the latest.\n */\n static setTracer(name: string, version?: string): void {\n BaseOpenTelemetryComponent._tracer = api.trace.getTracer(\n name,\n version ? version : PACKAGE_VERSION\n );\n }\n\n /**\n * Sets the logger for all components being instrumented\n * @param logger\n */\n static setLogger(logger: api.DiagLogger): void {\n api.diag.setLogger(logger);\n BaseOpenTelemetryComponent._logger = logger;\n }\n\n /**\n * Creates a new span as a child of the current parent span.\n * If parent span is undefined, just the child is created.\n * @param react React component currently being instrumented\n * @param name Name of span\n * @param parentSpan parent span\n */\n private _createSpanWithParent(\n react: React.Component,\n name: string,\n parentSpan: api.Span\n ): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(\n name,\n {\n attributes: this._getAttributes(react),\n },\n parentSpan\n ? api.trace.setSpan(api.context.active(), parentSpan)\n : undefined\n );\n }\n\n /**\n * Creates a new span\n * @param react React component currently being instrumented\n * @param name Name of span\n */\n private _createSpan(react: React.Component, name: string): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(name, {\n attributes: this._getAttributes(react),\n });\n }\n\n /**\n * Provides instrumentation for a function\n * @param react React component currently instrumenting.\n * @param spanName Name to set the span of the instrumented function to.\n * @param original Original function currently being wrapped.\n * @parentName Name to set parent span to on error.\n */\n private _instrumentFunction(\n react: React.Component,\n spanName: string,\n parent: api.Span,\n original: any\n ) {\n const span = this._createSpanWithParent(react, spanName, parent);\n let wasError = false;\n try {\n return api.context.with(\n api.trace.setSpan(api.context.active(), span),\n () => {\n return original();\n }\n );\n } catch (err: any) {\n span.setAttribute(AttributeNames.REACT_ERROR, err.stack);\n wasError = true;\n throw err;\n } finally {\n span.end();\n if (wasError) {\n this._endParentSpan(react);\n }\n }\n }\n\n /**\n * Ends the current parent span.\n * @param react React component parent span belongs to.\n */\n private _endParentSpan(react: React.Component) {\n const parentSpan = this._parentSpanMap.get(react);\n if (parentSpan) {\n parentSpan.end();\n this._parentSpanMap.delete(react);\n }\n }\n\n /**\n * Returns attributes object for spans\n * @param react React component currently being instrumented\n **/\n private _getAttributes(react: React.Component) {\n let state: string;\n try {\n state = JSON.stringify(react.state);\n } catch {\n state = '{\"message\": \"state could not be turned into string\"}';\n }\n return {\n [AttributeNames.LOCATION_URL]: window.location.href,\n [AttributeNames.REACT_NAME]: react.constructor.name,\n [AttributeNames.REACT_STATE]: state,\n };\n }\n\n /**\n * This function returns a parent span. If the parent doesn't\n * exist, the function creates one\n * @param react React component parent span belongs to.\n */\n private _getParentSpan(react: React.Component, parentName: string): api.Span {\n const parentSpan: api.Span | undefined = this._parentSpanMap.get(react);\n if (!parentSpan) {\n const span = this._createSpan(react, parentName);\n this._parentSpanMap.set(react, span);\n }\n return this._parentSpanMap.get(react)!;\n }\n\n /**\n * Patches the render lifecycle method\n */\n private _patchRender() {\n return (original: RenderFunction): RenderFunction => {\n const plugin = this;\n return function patchRender(\n this: React.Component,\n ...args\n ): React.ReactNode {\n // Render is the first method in the mounting flow, if a parent span wasn't created already then we're in the mounting flow\n let parentSpan: api.Span;\n if (!plugin._parentSpanMap.get(this)) {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n } else {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n }\n\n return plugin._instrumentFunction(this, 'render', parentSpan, () => {\n return original!.apply(this, args);\n });\n };\n };\n }\n\n /**\n * Patches the componentDidMount lifecycle method\n */\n private _patchComponentDidMount() {\n return (original: ComponentDidMountFunction): ComponentDidMountFunction => {\n const plugin = this;\n\n return function patchComponentDidMount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidMount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the setState function\n */\n private _patchSetState() {\n return (original: SetStateFunction): SetStateFunction => {\n const plugin = this;\n return function patchSetState(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'setState()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the forceUpdate function\n */\n private _patchForceUpdate() {\n return (original: ForceUpdateFunction): ForceUpdateFunction => {\n const plugin = this;\n return function patchForceUpdate(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'forceUpdate()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchShouldComponentUpdate() {\n return (\n original: ShouldComponentUpdateFunction\n ): ShouldComponentUpdateFunction => {\n const plugin = this;\n\n return function patchShouldComponentUpdate(\n this: React.Component,\n ...args\n ): boolean {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'shouldComponentUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n // if shouldComponentUpdate returns false, the component does not get\n // updated and no other lifecycle methods get called\n if (!apply) {\n plugin._endParentSpan(this);\n }\n\n return apply;\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchGetSnapshotBeforeUpdate() {\n return (\n original: GetSnapshotBeforeUpdateFunction\n ): GetSnapshotBeforeUpdateFunction => {\n const plugin = this;\n\n return function patchGetSnapshotBeforeUpdate(\n this: React.Component,\n ...args\n ): any {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'getSnapshotBeforeUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the componentDidUpdate lifecycle method\n */\n private _patchComponentDidUpdate() {\n return (\n original: ComponentDidUpdateFunction\n ): ComponentDidUpdateFunction => {\n const plugin = this;\n\n return function patchComponentDidUpdate(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the componentWillUnmount lifecycle method\n */\n private _patchComponentWillUnmount() {\n return (\n original: ComponentWillUnmountFunction\n ): ComponentWillUnmountFunction => {\n const plugin = this;\n\n return function patchComponentWillUnmount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UNMOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentWillUnmount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * patch function which wraps all the lifecycle methods\n */\n public patch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'applying patch to',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n if (isWrapped(this.render)) {\n shimmer.unwrap(this, 'render');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method render'\n );\n }\n if (isWrapped(this.componentDidMount)) {\n shimmer.unwrap(this, 'componentDidMount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidMount'\n );\n }\n if (isWrapped(this.shouldComponentUpdate)) {\n shimmer.unwrap(this, 'shouldComponentUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method shouldComponentUpdate'\n );\n }\n if (isWrapped(this.getSnapshotBeforeUpdate)) {\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method getSnapshotBeforeUpdate'\n );\n }\n if (isWrapped(this.setState)) {\n shimmer.unwrap(this, 'setState');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method setState'\n );\n }\n if (isWrapped(this.forceUpdate)) {\n shimmer.unwrap(this, 'forceUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method forceUpdate'\n );\n }\n if (isWrapped(this.componentDidUpdate)) {\n shimmer.unwrap(this, 'componentDidUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidUpdate'\n );\n }\n if (isWrapped(this.componentWillUnmount)) {\n shimmer.unwrap(this, 'componentWillUnmount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentWillUnmount'\n );\n }\n\n // Lifecycle methods must exist when patching, even if not defined in component\n if (!this.render) {\n this.render = () => {\n return null;\n };\n }\n if (!this.componentDidMount) {\n this.componentDidMount = () => {\n return;\n };\n }\n if (!this.shouldComponentUpdate) {\n this.shouldComponentUpdate = () => {\n return true;\n };\n }\n if (!this.getSnapshotBeforeUpdate) {\n this.getSnapshotBeforeUpdate = () => {\n return null;\n };\n }\n if (!this.componentDidUpdate) {\n this.componentDidUpdate = () => {\n return;\n };\n }\n if (!this.componentWillUnmount) {\n this.componentWillUnmount = () => {\n return;\n };\n }\n\n shimmer.wrap(this, 'render', this._patchRender());\n shimmer.wrap(this, 'componentDidMount', this._patchComponentDidMount());\n shimmer.wrap(this, 'setState', this._patchSetState());\n shimmer.wrap(this, 'forceUpdate', this._patchForceUpdate());\n shimmer.wrap(\n this,\n 'shouldComponentUpdate',\n this._patchShouldComponentUpdate()\n );\n shimmer.wrap(\n this,\n 'getSnapshotBeforeUpdate',\n this._patchGetSnapshotBeforeUpdate()\n );\n shimmer.wrap(this, 'componentDidUpdate', this._patchComponentDidUpdate());\n shimmer.wrap(\n this,\n 'componentWillUnmount',\n this._patchComponentWillUnmount()\n );\n }\n\n /**\n * unpatch function to unwrap all the lifecycle methods\n */\n public unpatch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'removing patch from',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n shimmer.unwrap(this, 'render');\n\n shimmer.unwrap(this, 'componentDidMount');\n\n shimmer.unwrap(this, 'setState');\n shimmer.unwrap(this, 'forceUpdate');\n shimmer.unwrap(this, 'shouldComponentUpdate');\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n shimmer.unwrap(this, 'componentDidUpdate');\n\n shimmer.unwrap(this, 'componentWillUnmount');\n\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
2
|
+
export type RenderFunction = () => React.ReactNode;
|
|
3
|
+
export type ComponentDidMountFunction = (() => void) | undefined;
|
|
4
|
+
export type ComponentDidUpdateFunction = ((prevProps: Readonly<any>, prevState: Readonly<any>, snapshot?: any) => void) | undefined;
|
|
5
|
+
export type ShouldComponentUpdateFunction = ((nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any) => boolean) | undefined;
|
|
6
|
+
export type SetStateFunction = <K extends never>(state: any | ((prevState: Readonly<any>, props: Readonly<any>) => any | Pick<any, K> | null) | Pick<any, K> | null, callback?: (() => void) | undefined) => void;
|
|
7
|
+
export type ForceUpdateFunction = (callback?: (() => void) | undefined) => void;
|
|
8
|
+
export type GetSnapshotBeforeUpdateFunction = ((prevProps: Readonly<any>, prevState: Readonly<any>) => any) | undefined;
|
|
9
|
+
export type ComponentWillUnmountFunction = (() => void) | undefined;
|
|
10
10
|
//# sourceMappingURL=internal-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,
|
|
1
|
+
{"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;AAKnD,MAAM,MAAM,yBAAyB,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;AAKjE,MAAM,MAAM,0BAA0B,GAClC,CAAC,CACC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,QAAQ,CAAC,EAAE,GAAG,KACX,IAAI,CAAC,GACV,SAAS,CAAC;AAKd,MAAM,MAAM,6BAA6B,GACrC,CAAC,CACC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,WAAW,EAAE,GAAG,KACb,OAAO,CAAC,GACb,SAAS,CAAC;AAKd,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,KAAK,EAC7C,KAAK,EACD,GAAG,GACH,CAAC,CACC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KACjB,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAC/B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GACZ,IAAI,EACR,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,KAChC,IAAI,CAAC;AAKV,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;AAKhF,MAAM,MAAM,+BAA+B,GACvC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAC7D,SAAS,CAAC;AAKd,MAAM,MAAM,4BAA4B,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC"}
|
package/build/esnext/version.js
CHANGED
|
@@ -14,6 +14,6 @@
|
|
|
14
14
|
* limitations under the License.
|
|
15
15
|
*/
|
|
16
16
|
// this is autogenerated file, see scripts/version-update.js
|
|
17
|
-
export const PACKAGE_VERSION = '0.
|
|
17
|
+
export const PACKAGE_VERSION = '0.33.0';
|
|
18
18
|
export const PACKAGE_NAME = '@opentelemetry/plugin-react-load';
|
|
19
19
|
//# sourceMappingURL=version.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,kCAAkC,CAAC","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\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,kCAAkC,CAAC","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\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.33.0';\nexport const PACKAGE_NAME = '@opentelemetry/plugin-react-load';\n"]}
|
|
@@ -27,13 +27,16 @@ const version_1 = require("./version");
|
|
|
27
27
|
* This class is the base component for a React component with lifecycle instrumentation
|
|
28
28
|
*/
|
|
29
29
|
class BaseOpenTelemetryComponent extends React.Component {
|
|
30
|
+
component = 'react-load';
|
|
31
|
+
moduleName = this.component;
|
|
32
|
+
_parentSpanMap;
|
|
33
|
+
static _tracer;
|
|
34
|
+
static _logger = api.diag;
|
|
30
35
|
/**
|
|
31
36
|
* @param props Props of the React component
|
|
32
37
|
*/
|
|
33
38
|
constructor(props) {
|
|
34
39
|
super(props);
|
|
35
|
-
this.component = 'react-load';
|
|
36
|
-
this.moduleName = this.component;
|
|
37
40
|
this._parentSpanMap = new WeakMap();
|
|
38
41
|
this.patch();
|
|
39
42
|
}
|
|
@@ -124,7 +127,7 @@ class BaseOpenTelemetryComponent extends React.Component {
|
|
|
124
127
|
try {
|
|
125
128
|
state = JSON.stringify(react.state);
|
|
126
129
|
}
|
|
127
|
-
catch
|
|
130
|
+
catch {
|
|
128
131
|
state = '{"message": "state could not be turned into string"}';
|
|
129
132
|
}
|
|
130
133
|
return {
|
|
@@ -371,5 +374,4 @@ class BaseOpenTelemetryComponent extends React.Component {
|
|
|
371
374
|
}
|
|
372
375
|
}
|
|
373
376
|
exports.BaseOpenTelemetryComponent = BaseOpenTelemetryComponent;
|
|
374
|
-
BaseOpenTelemetryComponent._logger = api.diag;
|
|
375
377
|
//# sourceMappingURL=BaseOpenTelemetryComponent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseOpenTelemetryComponent.js","sourceRoot":"","sources":["../../src/BaseOpenTelemetryComponent.ts"],"names":[],"mappings":"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","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 { isWrapped } from '@opentelemetry/instrumentation';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\n/** @knipignore */\nimport { PACKAGE_VERSION } from './version';\nimport {\n RenderFunction,\n ComponentDidMountFunction,\n ComponentDidUpdateFunction,\n ShouldComponentUpdateFunction,\n SetStateFunction,\n ForceUpdateFunction,\n GetSnapshotBeforeUpdateFunction,\n ComponentWillUnmountFunction,\n} from './internal-types';\n\n/**\n * This class is the base component for a React component with lifecycle instrumentation\n */\nexport class BaseOpenTelemetryComponent extends React.Component {\n readonly component: string = 'react-load';\n moduleName = this.component;\n private _parentSpanMap: WeakMap<React.Component, api.Span>;\n private static _tracer: api.Tracer;\n private static _logger: api.DiagLogger = api.diag;\n\n /**\n * @param props Props of the React component\n */\n constructor(props: Readonly<any>) {\n super(props);\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n this.patch();\n }\n\n /**\n * Sets the tracer for all components being instrumented\n * @param name Name of tracer\n * @param version Version of tracer, this is optional. When not provided it will use the latest.\n */\n static setTracer(name: string, version?: string): void {\n BaseOpenTelemetryComponent._tracer = api.trace.getTracer(\n name,\n version ? version : PACKAGE_VERSION\n );\n }\n\n /**\n * Sets the logger for all components being instrumented\n * @param logger\n */\n static setLogger(logger: api.DiagLogger): void {\n api.diag.setLogger(logger);\n BaseOpenTelemetryComponent._logger = logger;\n }\n\n /**\n * Creates a new span as a child of the current parent span.\n * If parent span is undefined, just the child is created.\n * @param react React component currently being instrumented\n * @param name Name of span\n * @param parentSpan parent span\n */\n private _createSpanWithParent(\n react: React.Component,\n name: string,\n parentSpan: api.Span\n ): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(\n name,\n {\n attributes: this._getAttributes(react),\n },\n parentSpan\n ? api.trace.setSpan(api.context.active(), parentSpan)\n : undefined\n );\n }\n\n /**\n * Creates a new span\n * @param react React component currently being instrumented\n * @param name Name of span\n */\n private _createSpan(react: React.Component, name: string): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(name, {\n attributes: this._getAttributes(react),\n });\n }\n\n /**\n * Provides instrumentation for a function\n * @param react React component currently instrumenting.\n * @param spanName Name to set the span of the instrumented function to.\n * @param original Original function currently being wrapped.\n * @parentName Name to set parent span to on error.\n */\n private _instrumentFunction(\n react: React.Component,\n spanName: string,\n parent: api.Span,\n original: any\n ) {\n const span = this._createSpanWithParent(react, spanName, parent);\n let wasError = false;\n try {\n return api.context.with(\n api.trace.setSpan(api.context.active(), span),\n () => {\n return original();\n }\n );\n } catch (err: any) {\n span.setAttribute(AttributeNames.REACT_ERROR, err.stack);\n wasError = true;\n throw err;\n } finally {\n span.end();\n if (wasError) {\n this._endParentSpan(react);\n }\n }\n }\n\n /**\n * Ends the current parent span.\n * @param react React component parent span belongs to.\n */\n private _endParentSpan(react: React.Component) {\n const parentSpan = this._parentSpanMap.get(react);\n if (parentSpan) {\n parentSpan.end();\n this._parentSpanMap.delete(react);\n }\n }\n\n /**\n * Returns attributes object for spans\n * @param react React component currently being instrumented\n **/\n private _getAttributes(react: React.Component) {\n let state: string;\n try {\n state = JSON.stringify(react.state);\n } catch {\n state = '{\"message\": \"state could not be turned into string\"}';\n }\n return {\n [AttributeNames.LOCATION_URL]: window.location.href,\n [AttributeNames.REACT_NAME]: react.constructor.name,\n [AttributeNames.REACT_STATE]: state,\n };\n }\n\n /**\n * This function returns a parent span. If the parent doesn't\n * exist, the function creates one\n * @param react React component parent span belongs to.\n */\n private _getParentSpan(react: React.Component, parentName: string): api.Span {\n const parentSpan: api.Span | undefined = this._parentSpanMap.get(react);\n if (!parentSpan) {\n const span = this._createSpan(react, parentName);\n this._parentSpanMap.set(react, span);\n }\n return this._parentSpanMap.get(react)!;\n }\n\n /**\n * Patches the render lifecycle method\n */\n private _patchRender() {\n return (original: RenderFunction): RenderFunction => {\n const plugin = this;\n return function patchRender(\n this: React.Component,\n ...args\n ): React.ReactNode {\n // Render is the first method in the mounting flow, if a parent span wasn't created already then we're in the mounting flow\n let parentSpan: api.Span;\n if (!plugin._parentSpanMap.get(this)) {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n } else {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n }\n\n return plugin._instrumentFunction(this, 'render', parentSpan, () => {\n return original!.apply(this, args);\n });\n };\n };\n }\n\n /**\n * Patches the componentDidMount lifecycle method\n */\n private _patchComponentDidMount() {\n return (original: ComponentDidMountFunction): ComponentDidMountFunction => {\n const plugin = this;\n\n return function patchComponentDidMount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidMount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the setState function\n */\n private _patchSetState() {\n return (original: SetStateFunction): SetStateFunction => {\n const plugin = this;\n return function patchSetState(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'setState()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the forceUpdate function\n */\n private _patchForceUpdate() {\n return (original: ForceUpdateFunction): ForceUpdateFunction => {\n const plugin = this;\n return function patchForceUpdate(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'forceUpdate()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchShouldComponentUpdate() {\n return (\n original: ShouldComponentUpdateFunction\n ): ShouldComponentUpdateFunction => {\n const plugin = this;\n\n return function patchShouldComponentUpdate(\n this: React.Component,\n ...args\n ): boolean {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'shouldComponentUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n // if shouldComponentUpdate returns false, the component does not get\n // updated and no other lifecycle methods get called\n if (!apply) {\n plugin._endParentSpan(this);\n }\n\n return apply;\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchGetSnapshotBeforeUpdate() {\n return (\n original: GetSnapshotBeforeUpdateFunction\n ): GetSnapshotBeforeUpdateFunction => {\n const plugin = this;\n\n return function patchGetSnapshotBeforeUpdate(\n this: React.Component,\n ...args\n ): any {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'getSnapshotBeforeUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the componentDidUpdate lifecycle method\n */\n private _patchComponentDidUpdate() {\n return (\n original: ComponentDidUpdateFunction\n ): ComponentDidUpdateFunction => {\n const plugin = this;\n\n return function patchComponentDidUpdate(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the componentWillUnmount lifecycle method\n */\n private _patchComponentWillUnmount() {\n return (\n original: ComponentWillUnmountFunction\n ): ComponentWillUnmountFunction => {\n const plugin = this;\n\n return function patchComponentWillUnmount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UNMOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentWillUnmount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * patch function which wraps all the lifecycle methods\n */\n public patch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'applying patch to',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n if (isWrapped(this.render)) {\n shimmer.unwrap(this, 'render');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method render'\n );\n }\n if (isWrapped(this.componentDidMount)) {\n shimmer.unwrap(this, 'componentDidMount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidMount'\n );\n }\n if (isWrapped(this.shouldComponentUpdate)) {\n shimmer.unwrap(this, 'shouldComponentUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method shouldComponentUpdate'\n );\n }\n if (isWrapped(this.getSnapshotBeforeUpdate)) {\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method getSnapshotBeforeUpdate'\n );\n }\n if (isWrapped(this.setState)) {\n shimmer.unwrap(this, 'setState');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method setState'\n );\n }\n if (isWrapped(this.forceUpdate)) {\n shimmer.unwrap(this, 'forceUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method forceUpdate'\n );\n }\n if (isWrapped(this.componentDidUpdate)) {\n shimmer.unwrap(this, 'componentDidUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidUpdate'\n );\n }\n if (isWrapped(this.componentWillUnmount)) {\n shimmer.unwrap(this, 'componentWillUnmount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentWillUnmount'\n );\n }\n\n // Lifecycle methods must exist when patching, even if not defined in component\n if (!this.render) {\n this.render = () => {\n return null;\n };\n }\n if (!this.componentDidMount) {\n this.componentDidMount = () => {\n return;\n };\n }\n if (!this.shouldComponentUpdate) {\n this.shouldComponentUpdate = () => {\n return true;\n };\n }\n if (!this.getSnapshotBeforeUpdate) {\n this.getSnapshotBeforeUpdate = () => {\n return null;\n };\n }\n if (!this.componentDidUpdate) {\n this.componentDidUpdate = () => {\n return;\n };\n }\n if (!this.componentWillUnmount) {\n this.componentWillUnmount = () => {\n return;\n };\n }\n\n shimmer.wrap(this, 'render', this._patchRender());\n shimmer.wrap(this, 'componentDidMount', this._patchComponentDidMount());\n shimmer.wrap(this, 'setState', this._patchSetState());\n shimmer.wrap(this, 'forceUpdate', this._patchForceUpdate());\n shimmer.wrap(\n this,\n 'shouldComponentUpdate',\n this._patchShouldComponentUpdate()\n );\n shimmer.wrap(\n this,\n 'getSnapshotBeforeUpdate',\n this._patchGetSnapshotBeforeUpdate()\n );\n shimmer.wrap(this, 'componentDidUpdate', this._patchComponentDidUpdate());\n shimmer.wrap(\n this,\n 'componentWillUnmount',\n this._patchComponentWillUnmount()\n );\n }\n\n /**\n * unpatch function to unwrap all the lifecycle methods\n */\n public unpatch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'removing patch from',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n shimmer.unwrap(this, 'render');\n\n shimmer.unwrap(this, 'componentDidMount');\n\n shimmer.unwrap(this, 'setState');\n shimmer.unwrap(this, 'forceUpdate');\n shimmer.unwrap(this, 'shouldComponentUpdate');\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n shimmer.unwrap(this, 'componentDidUpdate');\n\n shimmer.unwrap(this, 'componentWillUnmount');\n\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"BaseOpenTelemetryComponent.js","sourceRoot":"","sources":["../../src/BaseOpenTelemetryComponent.ts"],"names":[],"mappings":"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","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 { isWrapped } from '@opentelemetry/instrumentation';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\n/** @knipignore */\nimport { PACKAGE_VERSION } from './version';\nimport {\n RenderFunction,\n ComponentDidMountFunction,\n ComponentDidUpdateFunction,\n ShouldComponentUpdateFunction,\n SetStateFunction,\n ForceUpdateFunction,\n GetSnapshotBeforeUpdateFunction,\n ComponentWillUnmountFunction,\n} from './internal-types';\n\n/**\n * This class is the base component for a React component with lifecycle instrumentation\n */\nexport class BaseOpenTelemetryComponent extends React.Component {\n readonly component: string = 'react-load';\n moduleName = this.component;\n private _parentSpanMap: WeakMap<React.Component, api.Span>;\n private static _tracer: api.Tracer;\n private static _logger: api.DiagLogger = api.diag;\n\n /**\n * @param props Props of the React component\n */\n constructor(props: Readonly<any>) {\n super(props);\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n this.patch();\n }\n\n /**\n * Sets the tracer for all components being instrumented\n * @param name Name of tracer\n * @param version Version of tracer, this is optional. When not provided it will use the latest.\n */\n static setTracer(name: string, version?: string): void {\n BaseOpenTelemetryComponent._tracer = api.trace.getTracer(\n name,\n version ? version : PACKAGE_VERSION\n );\n }\n\n /**\n * Sets the logger for all components being instrumented\n * @param logger\n */\n static setLogger(logger: api.DiagLogger): void {\n api.diag.setLogger(logger);\n BaseOpenTelemetryComponent._logger = logger;\n }\n\n /**\n * Creates a new span as a child of the current parent span.\n * If parent span is undefined, just the child is created.\n * @param react React component currently being instrumented\n * @param name Name of span\n * @param parentSpan parent span\n */\n private _createSpanWithParent(\n react: React.Component,\n name: string,\n parentSpan: api.Span\n ): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(\n name,\n {\n attributes: this._getAttributes(react),\n },\n parentSpan\n ? api.trace.setSpan(api.context.active(), parentSpan)\n : undefined\n );\n }\n\n /**\n * Creates a new span\n * @param react React component currently being instrumented\n * @param name Name of span\n */\n private _createSpan(react: React.Component, name: string): api.Span {\n return BaseOpenTelemetryComponent._tracer.startSpan(name, {\n attributes: this._getAttributes(react),\n });\n }\n\n /**\n * Provides instrumentation for a function\n * @param react React component currently instrumenting.\n * @param spanName Name to set the span of the instrumented function to.\n * @param original Original function currently being wrapped.\n * @parentName Name to set parent span to on error.\n */\n private _instrumentFunction(\n react: React.Component,\n spanName: string,\n parent: api.Span,\n original: any\n ) {\n const span = this._createSpanWithParent(react, spanName, parent);\n let wasError = false;\n try {\n return api.context.with(\n api.trace.setSpan(api.context.active(), span),\n () => {\n return original();\n }\n );\n } catch (err: any) {\n span.setAttribute(AttributeNames.REACT_ERROR, err.stack);\n wasError = true;\n throw err;\n } finally {\n span.end();\n if (wasError) {\n this._endParentSpan(react);\n }\n }\n }\n\n /**\n * Ends the current parent span.\n * @param react React component parent span belongs to.\n */\n private _endParentSpan(react: React.Component) {\n const parentSpan = this._parentSpanMap.get(react);\n if (parentSpan) {\n parentSpan.end();\n this._parentSpanMap.delete(react);\n }\n }\n\n /**\n * Returns attributes object for spans\n * @param react React component currently being instrumented\n **/\n private _getAttributes(react: React.Component) {\n let state: string;\n try {\n state = JSON.stringify(react.state);\n } catch {\n state = '{\"message\": \"state could not be turned into string\"}';\n }\n return {\n [AttributeNames.LOCATION_URL]: window.location.href,\n [AttributeNames.REACT_NAME]: react.constructor.name,\n [AttributeNames.REACT_STATE]: state,\n };\n }\n\n /**\n * This function returns a parent span. If the parent doesn't\n * exist, the function creates one\n * @param react React component parent span belongs to.\n */\n private _getParentSpan(react: React.Component, parentName: string): api.Span {\n const parentSpan: api.Span | undefined = this._parentSpanMap.get(react);\n if (!parentSpan) {\n const span = this._createSpan(react, parentName);\n this._parentSpanMap.set(react, span);\n }\n return this._parentSpanMap.get(react)!;\n }\n\n /**\n * Patches the render lifecycle method\n */\n private _patchRender() {\n return (original: RenderFunction): RenderFunction => {\n const plugin = this;\n return function patchRender(\n this: React.Component,\n ...args\n ): React.ReactNode {\n // Render is the first method in the mounting flow, if a parent span wasn't created already then we're in the mounting flow\n let parentSpan: api.Span;\n if (!plugin._parentSpanMap.get(this)) {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n } else {\n parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n }\n\n return plugin._instrumentFunction(this, 'render', parentSpan, () => {\n return original!.apply(this, args);\n });\n };\n };\n }\n\n /**\n * Patches the componentDidMount lifecycle method\n */\n private _patchComponentDidMount() {\n return (original: ComponentDidMountFunction): ComponentDidMountFunction => {\n const plugin = this;\n\n return function patchComponentDidMount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.MOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidMount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the setState function\n */\n private _patchSetState() {\n return (original: SetStateFunction): SetStateFunction => {\n const plugin = this;\n return function patchSetState(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'setState()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the forceUpdate function\n */\n private _patchForceUpdate() {\n return (original: ForceUpdateFunction): ForceUpdateFunction => {\n const plugin = this;\n return function patchForceUpdate(this: React.Component, ...args): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'forceUpdate()',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchShouldComponentUpdate() {\n return (\n original: ShouldComponentUpdateFunction\n ): ShouldComponentUpdateFunction => {\n const plugin = this;\n\n return function patchShouldComponentUpdate(\n this: React.Component,\n ...args\n ): boolean {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'shouldComponentUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n // if shouldComponentUpdate returns false, the component does not get\n // updated and no other lifecycle methods get called\n if (!apply) {\n plugin._endParentSpan(this);\n }\n\n return apply;\n };\n };\n }\n\n /**\n * Patches the shouldComponentUpdate lifecycle method\n */\n private _patchGetSnapshotBeforeUpdate() {\n return (\n original: GetSnapshotBeforeUpdateFunction\n ): GetSnapshotBeforeUpdateFunction => {\n const plugin = this;\n\n return function patchGetSnapshotBeforeUpdate(\n this: React.Component,\n ...args\n ): any {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n return plugin._instrumentFunction(\n this,\n 'getSnapshotBeforeUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n };\n };\n }\n\n /**\n * Patches the componentDidUpdate lifecycle method\n */\n private _patchComponentDidUpdate() {\n return (\n original: ComponentDidUpdateFunction\n ): ComponentDidUpdateFunction => {\n const plugin = this;\n\n return function patchComponentDidUpdate(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UPDATING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentDidUpdate',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * Patches the componentWillUnmount lifecycle method\n */\n private _patchComponentWillUnmount() {\n return (\n original: ComponentWillUnmountFunction\n ): ComponentWillUnmountFunction => {\n const plugin = this;\n\n return function patchComponentWillUnmount(\n this: React.Component,\n ...args\n ): void {\n const parentSpan = plugin._getParentSpan(\n this,\n AttributeNames.UNMOUNTING_SPAN\n );\n const apply = plugin._instrumentFunction(\n this,\n 'componentWillUnmount',\n parentSpan,\n () => {\n return original!.apply(this, args);\n }\n );\n plugin._endParentSpan(this);\n return apply;\n };\n };\n }\n\n /**\n * patch function which wraps all the lifecycle methods\n */\n public patch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'applying patch to',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n if (isWrapped(this.render)) {\n shimmer.unwrap(this, 'render');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method render'\n );\n }\n if (isWrapped(this.componentDidMount)) {\n shimmer.unwrap(this, 'componentDidMount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidMount'\n );\n }\n if (isWrapped(this.shouldComponentUpdate)) {\n shimmer.unwrap(this, 'shouldComponentUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method shouldComponentUpdate'\n );\n }\n if (isWrapped(this.getSnapshotBeforeUpdate)) {\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method getSnapshotBeforeUpdate'\n );\n }\n if (isWrapped(this.setState)) {\n shimmer.unwrap(this, 'setState');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method setState'\n );\n }\n if (isWrapped(this.forceUpdate)) {\n shimmer.unwrap(this, 'forceUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method forceUpdate'\n );\n }\n if (isWrapped(this.componentDidUpdate)) {\n shimmer.unwrap(this, 'componentDidUpdate');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentDidUpdate'\n );\n }\n if (isWrapped(this.componentWillUnmount)) {\n shimmer.unwrap(this, 'componentWillUnmount');\n BaseOpenTelemetryComponent._logger.warn(\n 'removing previous patch from method componentWillUnmount'\n );\n }\n\n // Lifecycle methods must exist when patching, even if not defined in component\n if (!this.render) {\n this.render = () => {\n return null;\n };\n }\n if (!this.componentDidMount) {\n this.componentDidMount = () => {\n return;\n };\n }\n if (!this.shouldComponentUpdate) {\n this.shouldComponentUpdate = () => {\n return true;\n };\n }\n if (!this.getSnapshotBeforeUpdate) {\n this.getSnapshotBeforeUpdate = () => {\n return null;\n };\n }\n if (!this.componentDidUpdate) {\n this.componentDidUpdate = () => {\n return;\n };\n }\n if (!this.componentWillUnmount) {\n this.componentWillUnmount = () => {\n return;\n };\n }\n\n shimmer.wrap(this, 'render', this._patchRender());\n shimmer.wrap(this, 'componentDidMount', this._patchComponentDidMount());\n shimmer.wrap(this, 'setState', this._patchSetState());\n shimmer.wrap(this, 'forceUpdate', this._patchForceUpdate());\n shimmer.wrap(\n this,\n 'shouldComponentUpdate',\n this._patchShouldComponentUpdate()\n );\n shimmer.wrap(\n this,\n 'getSnapshotBeforeUpdate',\n this._patchGetSnapshotBeforeUpdate()\n );\n shimmer.wrap(this, 'componentDidUpdate', this._patchComponentDidUpdate());\n shimmer.wrap(\n this,\n 'componentWillUnmount',\n this._patchComponentWillUnmount()\n );\n }\n\n /**\n * unpatch function to unwrap all the lifecycle methods\n */\n public unpatch(): void {\n BaseOpenTelemetryComponent._logger.debug(\n 'removing patch from',\n this.moduleName,\n PACKAGE_VERSION\n );\n\n shimmer.unwrap(this, 'render');\n\n shimmer.unwrap(this, 'componentDidMount');\n\n shimmer.unwrap(this, 'setState');\n shimmer.unwrap(this, 'forceUpdate');\n shimmer.unwrap(this, 'shouldComponentUpdate');\n shimmer.unwrap(this, 'getSnapshotBeforeUpdate');\n shimmer.unwrap(this, 'componentDidUpdate');\n\n shimmer.unwrap(this, 'componentWillUnmount');\n\n this._parentSpanMap = new WeakMap<React.Component, api.Span>();\n }\n}\n"]}
|
package/build/src/index.js
CHANGED
|
@@ -16,7 +16,11 @@
|
|
|
16
16
|
*/
|
|
17
17
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
18
|
if (k2 === undefined) k2 = k;
|
|
19
|
-
Object.
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
20
24
|
}) : (function(o, m, k, k2) {
|
|
21
25
|
if (k2 === undefined) k2 = k;
|
|
22
26
|
o[k2] = m[k];
|
package/build/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;AAEH,+DAA6C;AAC7C,yDAAuC","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\nexport * from './BaseOpenTelemetryComponent';\nexport * from './enums/AttributeNames';\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
export
|
|
7
|
-
export
|
|
8
|
-
export
|
|
9
|
-
export
|
|
2
|
+
export type RenderFunction = () => React.ReactNode;
|
|
3
|
+
export type ComponentDidMountFunction = (() => void) | undefined;
|
|
4
|
+
export type ComponentDidUpdateFunction = ((prevProps: Readonly<any>, prevState: Readonly<any>, snapshot?: any) => void) | undefined;
|
|
5
|
+
export type ShouldComponentUpdateFunction = ((nextProps: Readonly<any>, nextState: Readonly<any>, nextContext: any) => boolean) | undefined;
|
|
6
|
+
export type SetStateFunction = <K extends never>(state: any | ((prevState: Readonly<any>, props: Readonly<any>) => any | Pick<any, K> | null) | Pick<any, K> | null, callback?: (() => void) | undefined) => void;
|
|
7
|
+
export type ForceUpdateFunction = (callback?: (() => void) | undefined) => void;
|
|
8
|
+
export type GetSnapshotBeforeUpdateFunction = ((prevProps: Readonly<any>, prevState: Readonly<any>) => any) | undefined;
|
|
9
|
+
export type ComponentWillUnmountFunction = (() => void) | undefined;
|
|
10
10
|
//# sourceMappingURL=internal-types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,
|
|
1
|
+
{"version":3,"file":"internal-types.d.ts","sourceRoot":"","sources":["../../src/internal-types.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,MAAM,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC;AAKnD,MAAM,MAAM,yBAAyB,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;AAKjE,MAAM,MAAM,0BAA0B,GAClC,CAAC,CACC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,QAAQ,CAAC,EAAE,GAAG,KACX,IAAI,CAAC,GACV,SAAS,CAAC;AAKd,MAAM,MAAM,6BAA6B,GACrC,CAAC,CACC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,WAAW,EAAE,GAAG,KACb,OAAO,CAAC,GACb,SAAS,CAAC;AAKd,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,SAAS,KAAK,EAC7C,KAAK,EACD,GAAG,GACH,CAAC,CACC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EACxB,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,KACjB,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAC/B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GACZ,IAAI,EACR,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,KAChC,IAAI,CAAC;AAKV,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,KAAK,IAAI,CAAC;AAKhF,MAAM,MAAM,+BAA+B,GACvC,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,GAC7D,SAAS,CAAC;AAKd,MAAM,MAAM,4BAA4B,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC"}
|
package/build/src/version.d.ts
CHANGED
package/build/src/version.js
CHANGED
|
@@ -17,6 +17,6 @@
|
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;
|
|
19
19
|
// this is autogenerated file, see scripts/version-update.js
|
|
20
|
-
exports.PACKAGE_VERSION = '0.
|
|
20
|
+
exports.PACKAGE_VERSION = '0.33.0';
|
|
21
21
|
exports.PACKAGE_NAME = '@opentelemetry/plugin-react-load';
|
|
22
22
|
//# sourceMappingURL=version.js.map
|
package/build/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,kCAAkC,CAAC","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\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,eAAe,GAAG,QAAQ,CAAC;AAC3B,QAAA,YAAY,GAAG,kCAAkC,CAAC","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\n// this is autogenerated file, see scripts/version-update.js\nexport const PACKAGE_VERSION = '0.33.0';\nexport const PACKAGE_NAME = '@opentelemetry/plugin-react-load';\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opentelemetry/plugin-react-load",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.33.0",
|
|
4
4
|
"description": "OpenTelemetry instrumentation for React class component lifecycle methods",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"module": "build/esm/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"author": "OpenTelemetry Authors",
|
|
32
32
|
"license": "Apache-2.0",
|
|
33
33
|
"engines": {
|
|
34
|
-
"node": ">=
|
|
34
|
+
"node": "^18.19.0 || >=20.6.0"
|
|
35
35
|
},
|
|
36
36
|
"files": [
|
|
37
37
|
"build/esm/**/*.js",
|
|
@@ -51,16 +51,16 @@
|
|
|
51
51
|
"@babel/core": "7.24.6",
|
|
52
52
|
"@babel/preset-env": "7.24.6",
|
|
53
53
|
"@opentelemetry/api": "^1.0.0",
|
|
54
|
-
"@opentelemetry/propagator-b3": "^
|
|
55
|
-
"@opentelemetry/sdk-trace-base": "^
|
|
56
|
-
"@opentelemetry/sdk-trace-web": "^
|
|
57
|
-
"@types/mocha": "10.0.
|
|
54
|
+
"@opentelemetry/propagator-b3": "^2.0.0",
|
|
55
|
+
"@opentelemetry/sdk-trace-base": "^2.0.0",
|
|
56
|
+
"@opentelemetry/sdk-trace-web": "^2.0.0",
|
|
57
|
+
"@types/mocha": "10.0.10",
|
|
58
58
|
"@types/node": "18.18.14",
|
|
59
59
|
"@types/react": "17.0.83",
|
|
60
60
|
"@types/react-addons-test-utils": "0.14.26",
|
|
61
|
-
"@types/react-dom": "
|
|
61
|
+
"@types/react-dom": "17.0.26",
|
|
62
62
|
"@types/shimmer": "1.0.3",
|
|
63
|
-
"@types/sinon": "
|
|
63
|
+
"@types/sinon": "17.0.4",
|
|
64
64
|
"@types/webpack-env": "1.16.3",
|
|
65
65
|
"assert": "2.0.0",
|
|
66
66
|
"babel-loader": "8.3.0",
|
|
@@ -71,13 +71,13 @@
|
|
|
71
71
|
"karma-mocha": "2.0.1",
|
|
72
72
|
"karma-spec-reporter": "0.0.36",
|
|
73
73
|
"karma-webpack": "5.0.1",
|
|
74
|
-
"nyc": "
|
|
74
|
+
"nyc": "17.1.0",
|
|
75
75
|
"react": "17.0.2",
|
|
76
76
|
"react-dom": "17.0.2",
|
|
77
77
|
"rimraf": "5.0.10",
|
|
78
78
|
"sinon": "15.1.2",
|
|
79
79
|
"ts-loader": "9.5.2",
|
|
80
|
-
"typescript": "
|
|
80
|
+
"typescript": "5.0.4",
|
|
81
81
|
"webpack": "5.94.0",
|
|
82
82
|
"webpack-cli": "5.1.4",
|
|
83
83
|
"webpack-merge": "5.10.0"
|
|
@@ -87,9 +87,9 @@
|
|
|
87
87
|
"react": "^16.13.1 || ^17.0.0"
|
|
88
88
|
},
|
|
89
89
|
"dependencies": {
|
|
90
|
-
"@opentelemetry/instrumentation": "^0.
|
|
90
|
+
"@opentelemetry/instrumentation": "^0.201.0",
|
|
91
91
|
"shimmer": "^1.2.1"
|
|
92
92
|
},
|
|
93
93
|
"homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/web/opentelemetry-plugin-react-load#readme",
|
|
94
|
-
"gitHead": "
|
|
94
|
+
"gitHead": "393b51596dc869983a03ce8857658029ca122a15"
|
|
95
95
|
}
|