@opentelemetry/plugin-react-load 0.30.0 → 0.31.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/LICENSE CHANGED
@@ -186,7 +186,7 @@
186
186
  same "printed page" as the copyright notice for easier
187
187
  identification within third-party archives.
188
188
 
189
- Copyright [2022] OpenTelemetry Authors
189
+ Copyright [yyyy] [name of copyright owner]
190
190
 
191
191
  Licensed under the Apache License, Version 2.0 (the "License");
192
192
  you may not use this file except in compliance with the License.
package/README.md CHANGED
@@ -7,6 +7,8 @@ This module provides automatic instrumentation for *React lifecycles* for Web ap
7
7
 
8
8
  If total installation size is not constrained, it is recommended to use the [`@opentelemetry/auto-instrumentations-web`](https://www.npmjs.com/package/@opentelemetry/auto-instrumentations-web) bundle with [`@opentelemetry/sdk-trace-web`](https://www.npmjs.com/package/@opentelemetry/sdk-trace-web) for the most seamless instrumentation experience.
9
9
 
10
+ Compatible with OpenTelemetry JS API and SDK `1.0+`.
11
+
10
12
  ## Status
11
13
 
12
14
  | Maturity | [Component Owner](../../../.github/component_owners.yml) | Compatibility |
@@ -39,6 +41,10 @@ export class Component1 extends BaseOpenTelemetryComponent { ... }
39
41
 
40
42
  See [/examples/react-load](https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/examples/react-load) for a short example.
41
43
 
44
+ ## Semantic Conventions
45
+
46
+ This package does not currently generate any attributes from semantic conventions.
47
+
42
48
  ## Useful links
43
49
 
44
50
  - For more information on OpenTelemetry, visit: <https://opentelemetry.io/>
@@ -50,7 +56,7 @@ See [/examples/react-load](https://github.com/open-telemetry/opentelemetry-js-co
50
56
  Apache 2.0 - See [LICENSE][license-url] for more information.
51
57
 
52
58
  [discussions-url]: https://github.com/open-telemetry/opentelemetry-js/discussions
53
- [license-url]: https://github.com/open-telemetry/opentelemetry-js/blob/main/LICENSE
59
+ [license-url]: https://github.com/open-telemetry/opentelemetry-js-contrib/blob/main/LICENSE
54
60
  [license-image]: https://img.shields.io/badge/license-Apache_2.0-green.svg?style=flat
55
61
  [npm-url]: https://www.npmjs.com/package/@opentelemetry/plugin-react-load
56
62
  [npm-img]: https://badge.fury.io/js/%40opentelemetry%2Fplugin-react-load.svg
@@ -33,7 +33,7 @@ import { isWrapped } from '@opentelemetry/core';
33
33
  import * as shimmer from 'shimmer';
34
34
  import { AttributeNames } from './enums/AttributeNames';
35
35
  import * as React from 'react';
36
- import { VERSION } from './version';
36
+ import { PACKAGE_VERSION } from './version';
37
37
  /**
38
38
  * This class is the base component for a React component with lifecycle instrumentation
39
39
  */
@@ -56,7 +56,7 @@ var BaseOpenTelemetryComponent = /** @class */ (function (_super) {
56
56
  * @param version Version of tracer, this is optional. When not provided it will use the latest.
57
57
  */
58
58
  BaseOpenTelemetryComponent.setTracer = function (name, version) {
59
- BaseOpenTelemetryComponent._tracer = api.trace.getTracer(name, version ? version : VERSION);
59
+ BaseOpenTelemetryComponent._tracer = api.trace.getTracer(name, version ? version : PACKAGE_VERSION);
60
60
  };
61
61
  /**
62
62
  * Sets the logger for all components being instrumented
@@ -343,7 +343,7 @@ var BaseOpenTelemetryComponent = /** @class */ (function (_super) {
343
343
  * patch function which wraps all the lifecycle methods
344
344
  */
345
345
  BaseOpenTelemetryComponent.prototype.patch = function () {
346
- BaseOpenTelemetryComponent._logger.debug('applying patch to', this.moduleName, VERSION);
346
+ BaseOpenTelemetryComponent._logger.debug('applying patch to', this.moduleName, PACKAGE_VERSION);
347
347
  if (isWrapped(this.render)) {
348
348
  shimmer.unwrap(this, 'render');
349
349
  BaseOpenTelemetryComponent._logger.warn('removing previous patch from method render');
@@ -420,7 +420,7 @@ var BaseOpenTelemetryComponent = /** @class */ (function (_super) {
420
420
  * unpatch function to unwrap all the lifecycle methods
421
421
  */
422
422
  BaseOpenTelemetryComponent.prototype.unpatch = function () {
423
- BaseOpenTelemetryComponent._logger.debug('removing patch from', this.moduleName, VERSION);
423
+ BaseOpenTelemetryComponent._logger.debug('removing patch from', this.moduleName, PACKAGE_VERSION);
424
424
  shimmer.unwrap(this, 'render');
425
425
  shimmer.unwrap(this, 'componentDidMount');
426
426
  shimmer.unwrap(this, 'setState');
@@ -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/core';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\nimport { 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 : 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 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 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/core';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\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,2 +1,3 @@
1
- export declare const VERSION = "0.30.0";
1
+ export declare const PACKAGE_VERSION = "0.31.0";
2
+ export declare const PACKAGE_NAME = "@opentelemetry/plugin-react-load";
2
3
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,OAAO,WAAW,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,YAAY,qCAAqC,CAAC"}
@@ -14,5 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  // this is autogenerated file, see scripts/version-update.js
17
- export var VERSION = '0.30.0';
17
+ export var PACKAGE_VERSION = '0.31.0';
18
+ export var PACKAGE_NAME = '@opentelemetry/plugin-react-load';
18
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,IAAM,OAAO,GAAG,QAAQ,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 VERSION = '0.30.0';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,4DAA4D;AAC5D,MAAM,CAAC,IAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,IAAM,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.31.0';\nexport const PACKAGE_NAME = '@opentelemetry/plugin-react-load';\n"]}
@@ -18,7 +18,7 @@ import { isWrapped } from '@opentelemetry/core';
18
18
  import * as shimmer from 'shimmer';
19
19
  import { AttributeNames } from './enums/AttributeNames';
20
20
  import * as React from 'react';
21
- import { VERSION } from './version';
21
+ import { PACKAGE_VERSION } from './version';
22
22
  /**
23
23
  * This class is the base component for a React component with lifecycle instrumentation
24
24
  */
@@ -39,7 +39,7 @@ export class BaseOpenTelemetryComponent extends React.Component {
39
39
  * @param version Version of tracer, this is optional. When not provided it will use the latest.
40
40
  */
41
41
  static setTracer(name, version) {
42
- BaseOpenTelemetryComponent._tracer = api.trace.getTracer(name, version ? version : VERSION);
42
+ BaseOpenTelemetryComponent._tracer = api.trace.getTracer(name, version ? version : PACKAGE_VERSION);
43
43
  }
44
44
  /**
45
45
  * Sets the logger for all components being instrumented
@@ -277,7 +277,7 @@ export class BaseOpenTelemetryComponent extends React.Component {
277
277
  * patch function which wraps all the lifecycle methods
278
278
  */
279
279
  patch() {
280
- BaseOpenTelemetryComponent._logger.debug('applying patch to', this.moduleName, VERSION);
280
+ BaseOpenTelemetryComponent._logger.debug('applying patch to', this.moduleName, PACKAGE_VERSION);
281
281
  if (isWrapped(this.render)) {
282
282
  shimmer.unwrap(this, 'render');
283
283
  BaseOpenTelemetryComponent._logger.warn('removing previous patch from method render');
@@ -354,7 +354,7 @@ export class BaseOpenTelemetryComponent extends React.Component {
354
354
  * unpatch function to unwrap all the lifecycle methods
355
355
  */
356
356
  unpatch() {
357
- BaseOpenTelemetryComponent._logger.debug('removing patch from', this.moduleName, VERSION);
357
+ BaseOpenTelemetryComponent._logger.debug('removing patch from', this.moduleName, PACKAGE_VERSION);
358
358
  shimmer.unwrap(this, 'render');
359
359
  shimmer.unwrap(this, 'componentDidMount');
360
360
  shimmer.unwrap(this, 'setState');
@@ -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/core';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\nimport { 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 : 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 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 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/core';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\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,2 +1,3 @@
1
- export declare const VERSION = "0.30.0";
1
+ export declare const PACKAGE_VERSION = "0.31.0";
2
+ export declare const PACKAGE_NAME = "@opentelemetry/plugin-react-load";
2
3
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,OAAO,WAAW,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,YAAY,qCAAqC,CAAC"}
@@ -14,5 +14,6 @@
14
14
  * limitations under the License.
15
15
  */
16
16
  // this is autogenerated file, see scripts/version-update.js
17
- export const VERSION = '0.30.0';
17
+ export const PACKAGE_VERSION = '0.31.0';
18
+ export const PACKAGE_NAME = '@opentelemetry/plugin-react-load';
18
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,OAAO,GAAG,QAAQ,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 VERSION = '0.30.0';\n"]}
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.31.0';\nexport const PACKAGE_NAME = '@opentelemetry/plugin-react-load';\n"]}
@@ -42,7 +42,7 @@ class BaseOpenTelemetryComponent extends React.Component {
42
42
  * @param version Version of tracer, this is optional. When not provided it will use the latest.
43
43
  */
44
44
  static setTracer(name, version) {
45
- BaseOpenTelemetryComponent._tracer = api.trace.getTracer(name, version ? version : version_1.VERSION);
45
+ BaseOpenTelemetryComponent._tracer = api.trace.getTracer(name, version ? version : version_1.PACKAGE_VERSION);
46
46
  }
47
47
  /**
48
48
  * Sets the logger for all components being instrumented
@@ -280,7 +280,7 @@ class BaseOpenTelemetryComponent extends React.Component {
280
280
  * patch function which wraps all the lifecycle methods
281
281
  */
282
282
  patch() {
283
- BaseOpenTelemetryComponent._logger.debug('applying patch to', this.moduleName, version_1.VERSION);
283
+ BaseOpenTelemetryComponent._logger.debug('applying patch to', this.moduleName, version_1.PACKAGE_VERSION);
284
284
  if ((0, core_1.isWrapped)(this.render)) {
285
285
  shimmer.unwrap(this, 'render');
286
286
  BaseOpenTelemetryComponent._logger.warn('removing previous patch from method render');
@@ -357,7 +357,7 @@ class BaseOpenTelemetryComponent extends React.Component {
357
357
  * unpatch function to unwrap all the lifecycle methods
358
358
  */
359
359
  unpatch() {
360
- BaseOpenTelemetryComponent._logger.debug('removing patch from', this.moduleName, version_1.VERSION);
360
+ BaseOpenTelemetryComponent._logger.debug('removing patch from', this.moduleName, version_1.PACKAGE_VERSION);
361
361
  shimmer.unwrap(this, 'render');
362
362
  shimmer.unwrap(this, 'componentDidMount');
363
363
  shimmer.unwrap(this, 'setState');
@@ -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/core';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\nimport { 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 : 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 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 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/core';\nimport * as shimmer from 'shimmer';\nimport { AttributeNames } from './enums/AttributeNames';\nimport * as React from 'react';\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,2 +1,3 @@
1
- export declare const VERSION = "0.30.0";
1
+ export declare const PACKAGE_VERSION = "0.31.0";
2
+ export declare const PACKAGE_NAME = "@opentelemetry/plugin-react-load";
2
3
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,OAAO,WAAW,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,YAAY,qCAAqC,CAAC"}
@@ -15,7 +15,8 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.VERSION = void 0;
18
+ exports.PACKAGE_NAME = exports.PACKAGE_VERSION = void 0;
19
19
  // this is autogenerated file, see scripts/version-update.js
20
- exports.VERSION = '0.30.0';
20
+ exports.PACKAGE_VERSION = '0.31.0';
21
+ exports.PACKAGE_NAME = '@opentelemetry/plugin-react-load';
21
22
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;AAEH,4DAA4D;AAC/C,QAAA,OAAO,GAAG,QAAQ,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 VERSION = '0.30.0';\n"]}
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.31.0';\nexport const PACKAGE_NAME = '@opentelemetry/plugin-react-load';\n"]}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@opentelemetry/plugin-react-load",
3
- "version": "0.30.0",
4
- "description": "OpenTelemetry React loading automatic instrumentation package.",
3
+ "version": "0.31.0",
4
+ "description": "OpenTelemetry instrumentation for React class component lifecycle methods",
5
5
  "main": "build/src/index.js",
6
6
  "module": "build/esm/index.js",
7
7
  "esnext": "build/esnext/index.js",
@@ -11,11 +11,12 @@
11
11
  "clean": "tsc --build --clean tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
12
12
  "lint": "eslint . --ext .ts",
13
13
  "lint:fix": "eslint . --ext .ts --fix",
14
+ "lint:readme": "node ../../../scripts/lint-readme.js",
14
15
  "precompile": "tsc --version && lerna run version:update --scope @opentelemetry/plugin-react-load --include-dependencies",
15
16
  "prewatch": "npm run precompile",
16
17
  "version:update": "node ../../../scripts/version-update.js",
17
- "compile": "npm run version:update && tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
18
- "prepare": "npm run compile",
18
+ "compile": "tsc --build tsconfig.json tsconfig.esm.json tsconfig.esnext.json",
19
+ "prepublishOnly": "npm run compile",
19
20
  "tdd": "karma start",
20
21
  "test:browser": "nyc karma start --single-run",
21
22
  "watch": "tsc --build --watch tsconfig.json tsconfig.esm.json tsconfig.esnext.json"
@@ -48,37 +49,39 @@
48
49
  "access": "public"
49
50
  },
50
51
  "devDependencies": {
51
- "@babel/core": "7.22.17",
52
- "@jsdevtools/coverage-istanbul-loader": "3.0.5",
52
+ "@babel/core": "7.24.6",
53
+ "@babel/preset-env": "7.24.6",
53
54
  "@opentelemetry/api": "^1.0.0",
54
- "@opentelemetry/propagator-b3": "^1.3.1",
55
- "@types/mocha": "7.0.2",
55
+ "@opentelemetry/propagator-b3": "1.26.0",
56
+ "@types/mocha": "10.0.6",
56
57
  "@types/node": "18.6.5",
57
- "@types/react": "17.0.67",
58
+ "@types/react": "17.0.80",
58
59
  "@types/react-addons-test-utils": "0.14.26",
59
60
  "@types/react-dom": "18.0.2",
60
61
  "@types/shimmer": "1.0.3",
61
- "@types/sinon": "10.0.18",
62
- "@types/webpack-env": "1.16.2",
63
- "babel-loader": "8.2.2",
64
- "karma": "6.3.16",
65
- "karma-chrome-launcher": "^3.1.1",
66
- "karma-coverage-istanbul-reporter": "3.0.3",
62
+ "@types/sinon": "10.0.20",
63
+ "@types/webpack-env": "1.16.3",
64
+ "assert": "2.0.0",
65
+ "babel-loader": "8.3.0",
66
+ "babel-plugin-istanbul": "7.0.0",
67
+ "karma": "6.4.4",
68
+ "karma-chrome-launcher": "3.1.0",
69
+ "karma-coverage": "2.2.1",
67
70
  "karma-mocha": "2.0.1",
68
71
  "karma-spec-reporter": "0.0.36",
69
- "karma-webpack": "4.0.2",
70
- "mocha": "7.2.0",
72
+ "karma-webpack": "5.0.1",
73
+ "mocha": "10.2.0",
71
74
  "nyc": "15.1.0",
72
75
  "react": "17.0.2",
73
76
  "react-dom": "17.0.2",
74
- "rimraf": "5.0.5",
75
- "sinon": "15.2.0",
76
- "ts-loader": "8.3.0",
77
+ "rimraf": "5.0.10",
78
+ "sinon": "15.1.2",
79
+ "ts-loader": "9.5.1",
77
80
  "ts-mocha": "10.0.0",
78
81
  "typescript": "4.4.4",
79
- "webpack": "4.46.0",
80
- "webpack-cli": "4.7.2",
81
- "webpack-merge": "5.8.0"
82
+ "webpack": "5.89.0",
83
+ "webpack-cli": "5.1.4",
84
+ "webpack-merge": "5.10.0"
82
85
  },
83
86
  "peerDependencies": {
84
87
  "@opentelemetry/api": "^1.0.0",
@@ -89,9 +92,8 @@
89
92
  "@opentelemetry/core": "^1.0.0",
90
93
  "@opentelemetry/sdk-trace-base": "^1.0.0",
91
94
  "@opentelemetry/sdk-trace-web": "^1.0.0",
92
- "@opentelemetry/semantic-conventions": "^1.0.0",
93
95
  "shimmer": "^1.2.1"
94
96
  },
95
97
  "homepage": "https://github.com/open-telemetry/opentelemetry-js-contrib/tree/main/plugins/web/opentelemetry-plugin-react-load#readme",
96
- "gitHead": "607d375595da3ab51b7f773ac360900121c4361b"
98
+ "gitHead": "9dc58afed8134f95908331bcff35c5d9ec46fe9a"
97
99
  }