@grafana/faro-react 1.0.0-beta1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +112 -0
  3. package/dist/cjs/errorBoundary/FaroErrorBoundary.d.ts +14 -0
  4. package/dist/cjs/errorBoundary/FaroErrorBoundary.js +85 -0
  5. package/dist/cjs/errorBoundary/FaroErrorBoundary.js.map +1 -0
  6. package/dist/cjs/errorBoundary/const.d.ts +2 -0
  7. package/dist/cjs/errorBoundary/const.js +8 -0
  8. package/dist/cjs/errorBoundary/const.js.map +1 -0
  9. package/dist/cjs/errorBoundary/index.d.ts +4 -0
  10. package/dist/cjs/errorBoundary/index.js +10 -0
  11. package/dist/cjs/errorBoundary/index.js.map +1 -0
  12. package/dist/cjs/errorBoundary/types.d.ts +19 -0
  13. package/dist/cjs/errorBoundary/types.js +3 -0
  14. package/dist/cjs/errorBoundary/types.js.map +1 -0
  15. package/dist/cjs/errorBoundary/withFaroErrorBoundary.d.ts +3 -0
  16. package/dist/cjs/errorBoundary/withFaroErrorBoundary.js +31 -0
  17. package/dist/cjs/errorBoundary/withFaroErrorBoundary.js.map +1 -0
  18. package/dist/cjs/index.d.ts +11 -0
  19. package/dist/cjs/index.js +101 -0
  20. package/dist/cjs/index.js.map +1 -0
  21. package/dist/cjs/instrumentation.d.ts +9 -0
  22. package/dist/cjs/instrumentation.js +37 -0
  23. package/dist/cjs/instrumentation.js.map +1 -0
  24. package/dist/cjs/profiler/FaroProfiler.d.ts +24 -0
  25. package/dist/cjs/profiler/FaroProfiler.js +135 -0
  26. package/dist/cjs/profiler/FaroProfiler.js.map +1 -0
  27. package/dist/cjs/profiler/index.d.ts +3 -0
  28. package/dist/cjs/profiler/index.js +8 -0
  29. package/dist/cjs/profiler/index.js.map +1 -0
  30. package/dist/cjs/profiler/withFaroProfiler.d.ts +3 -0
  31. package/dist/cjs/profiler/withFaroProfiler.js +31 -0
  32. package/dist/cjs/profiler/withFaroProfiler.js.map +1 -0
  33. package/dist/cjs/router/index.d.ts +7 -0
  34. package/dist/cjs/router/index.js +15 -0
  35. package/dist/cjs/router/index.js.map +1 -0
  36. package/dist/cjs/router/initialize.d.ts +3 -0
  37. package/dist/cjs/router/initialize.js +24 -0
  38. package/dist/cjs/router/initialize.js.map +1 -0
  39. package/dist/cjs/router/types.d.ts +21 -0
  40. package/dist/cjs/router/types.js +16 -0
  41. package/dist/cjs/router/types.js.map +1 -0
  42. package/dist/cjs/router/v4v5/FaroRoute.d.ts +3 -0
  43. package/dist/cjs/router/v4v5/FaroRoute.js +26 -0
  44. package/dist/cjs/router/v4v5/FaroRoute.js.map +1 -0
  45. package/dist/cjs/router/v4v5/activeEvent.d.ts +5 -0
  46. package/dist/cjs/router/v4v5/activeEvent.js +25 -0
  47. package/dist/cjs/router/v4v5/activeEvent.js.map +1 -0
  48. package/dist/cjs/router/v4v5/dependencies.d.ts +9 -0
  49. package/dist/cjs/router/v4v5/dependencies.js +16 -0
  50. package/dist/cjs/router/v4v5/dependencies.js.map +1 -0
  51. package/dist/cjs/router/v4v5/index.d.ts +4 -0
  52. package/dist/cjs/router/v4v5/index.js +10 -0
  53. package/dist/cjs/router/v4v5/index.js.map +1 -0
  54. package/dist/cjs/router/v4v5/initialize.d.ts +3 -0
  55. package/dist/cjs/router/v4v5/initialize.js +30 -0
  56. package/dist/cjs/router/v4v5/initialize.js.map +1 -0
  57. package/dist/cjs/router/v4v5/types.d.ts +16 -0
  58. package/dist/cjs/router/v4v5/types.js +3 -0
  59. package/dist/cjs/router/v4v5/types.js.map +1 -0
  60. package/dist/cjs/router/v6/FaroRoutes.d.ts +3 -0
  61. package/dist/cjs/router/v6/FaroRoutes.js +39 -0
  62. package/dist/cjs/router/v6/FaroRoutes.js.map +1 -0
  63. package/dist/cjs/router/v6/dependencies.d.ts +11 -0
  64. package/dist/cjs/router/v6/dependencies.js +19 -0
  65. package/dist/cjs/router/v6/dependencies.js.map +1 -0
  66. package/dist/cjs/router/v6/index.d.ts +4 -0
  67. package/dist/cjs/router/v6/index.js +10 -0
  68. package/dist/cjs/router/v6/index.js.map +1 -0
  69. package/dist/cjs/router/v6/initialize.d.ts +3 -0
  70. package/dist/cjs/router/v6/initialize.js +15 -0
  71. package/dist/cjs/router/v6/initialize.js.map +1 -0
  72. package/dist/cjs/router/v6/types.d.ts +35 -0
  73. package/dist/cjs/router/v6/types.js +3 -0
  74. package/dist/cjs/router/v6/types.js.map +1 -0
  75. package/dist/cjs/router/v6/utils.d.ts +4 -0
  76. package/dist/cjs/router/v6/utils.js +40 -0
  77. package/dist/cjs/router/v6/utils.js.map +1 -0
  78. package/dist/cjs/types.d.ts +12 -0
  79. package/dist/cjs/types.js +3 -0
  80. package/dist/cjs/types.js.map +1 -0
  81. package/dist/cjs/utils/const.d.ts +1 -0
  82. package/dist/cjs/utils/const.js +5 -0
  83. package/dist/cjs/utils/const.js.map +1 -0
  84. package/dist/cjs/utils/index.d.ts +2 -0
  85. package/dist/cjs/utils/index.js +14 -0
  86. package/dist/cjs/utils/index.js.map +1 -0
  87. package/dist/cjs/utils/reactVersion.d.ts +7 -0
  88. package/dist/cjs/utils/reactVersion.js +24 -0
  89. package/dist/cjs/utils/reactVersion.js.map +1 -0
  90. package/dist/esm/errorBoundary/FaroErrorBoundary.d.ts +14 -0
  91. package/dist/esm/errorBoundary/FaroErrorBoundary.js +63 -0
  92. package/dist/esm/errorBoundary/FaroErrorBoundary.js.map +1 -0
  93. package/dist/esm/errorBoundary/const.d.ts +2 -0
  94. package/dist/esm/errorBoundary/const.js +5 -0
  95. package/dist/esm/errorBoundary/const.js.map +1 -0
  96. package/dist/esm/errorBoundary/index.d.ts +4 -0
  97. package/dist/esm/errorBoundary/index.js +4 -0
  98. package/dist/esm/errorBoundary/index.js.map +1 -0
  99. package/dist/esm/errorBoundary/types.d.ts +19 -0
  100. package/dist/esm/errorBoundary/types.js +2 -0
  101. package/dist/esm/errorBoundary/types.js.map +1 -0
  102. package/dist/esm/errorBoundary/withFaroErrorBoundary.d.ts +3 -0
  103. package/dist/esm/errorBoundary/withFaroErrorBoundary.js +13 -0
  104. package/dist/esm/errorBoundary/withFaroErrorBoundary.js.map +1 -0
  105. package/dist/esm/index.d.ts +11 -0
  106. package/dist/esm/index.js +7 -0
  107. package/dist/esm/index.js.map +1 -0
  108. package/dist/esm/instrumentation.d.ts +9 -0
  109. package/dist/esm/instrumentation.js +14 -0
  110. package/dist/esm/instrumentation.js.map +1 -0
  111. package/dist/esm/profiler/FaroProfiler.d.ts +24 -0
  112. package/dist/esm/profiler/FaroProfiler.js +86 -0
  113. package/dist/esm/profiler/FaroProfiler.js.map +1 -0
  114. package/dist/esm/profiler/index.d.ts +3 -0
  115. package/dist/esm/profiler/index.js +3 -0
  116. package/dist/esm/profiler/index.js.map +1 -0
  117. package/dist/esm/profiler/withFaroProfiler.d.ts +3 -0
  118. package/dist/esm/profiler/withFaroProfiler.js +13 -0
  119. package/dist/esm/profiler/withFaroProfiler.js.map +1 -0
  120. package/dist/esm/router/index.d.ts +7 -0
  121. package/dist/esm/router/index.js +5 -0
  122. package/dist/esm/router/index.js.map +1 -0
  123. package/dist/esm/router/initialize.d.ts +3 -0
  124. package/dist/esm/router/initialize.js +20 -0
  125. package/dist/esm/router/initialize.js.map +1 -0
  126. package/dist/esm/router/types.d.ts +21 -0
  127. package/dist/esm/router/types.js +13 -0
  128. package/dist/esm/router/types.js.map +1 -0
  129. package/dist/esm/router/v4v5/FaroRoute.d.ts +3 -0
  130. package/dist/esm/router/v4v5/FaroRoute.js +11 -0
  131. package/dist/esm/router/v4v5/FaroRoute.js.map +1 -0
  132. package/dist/esm/router/v4v5/activeEvent.d.ts +5 -0
  133. package/dist/esm/router/v4v5/activeEvent.js +19 -0
  134. package/dist/esm/router/v4v5/activeEvent.js.map +1 -0
  135. package/dist/esm/router/v4v5/dependencies.d.ts +9 -0
  136. package/dist/esm/router/v4v5/dependencies.js +14 -0
  137. package/dist/esm/router/v4v5/dependencies.js.map +1 -0
  138. package/dist/esm/router/v4v5/index.d.ts +4 -0
  139. package/dist/esm/router/v4v5/index.js +4 -0
  140. package/dist/esm/router/v4v5/index.js.map +1 -0
  141. package/dist/esm/router/v4v5/initialize.d.ts +3 -0
  142. package/dist/esm/router/v4v5/initialize.js +23 -0
  143. package/dist/esm/router/v4v5/initialize.js.map +1 -0
  144. package/dist/esm/router/v4v5/types.d.ts +16 -0
  145. package/dist/esm/router/v4v5/types.js +2 -0
  146. package/dist/esm/router/v4v5/types.js.map +1 -0
  147. package/dist/esm/router/v6/FaroRoutes.d.ts +3 -0
  148. package/dist/esm/router/v6/FaroRoutes.js +24 -0
  149. package/dist/esm/router/v6/FaroRoutes.js.map +1 -0
  150. package/dist/esm/router/v6/dependencies.d.ts +11 -0
  151. package/dist/esm/router/v6/dependencies.js +20 -0
  152. package/dist/esm/router/v6/dependencies.js.map +1 -0
  153. package/dist/esm/router/v6/index.d.ts +4 -0
  154. package/dist/esm/router/v6/index.js +4 -0
  155. package/dist/esm/router/v6/index.js.map +1 -0
  156. package/dist/esm/router/v6/initialize.d.ts +3 -0
  157. package/dist/esm/router/v6/initialize.js +8 -0
  158. package/dist/esm/router/v6/initialize.js.map +1 -0
  159. package/dist/esm/router/v6/types.d.ts +35 -0
  160. package/dist/esm/router/v6/types.js +2 -0
  161. package/dist/esm/router/v6/types.js.map +1 -0
  162. package/dist/esm/router/v6/utils.d.ts +4 -0
  163. package/dist/esm/router/v6/utils.js +35 -0
  164. package/dist/esm/router/v6/utils.js.map +1 -0
  165. package/dist/esm/types.d.ts +12 -0
  166. package/dist/esm/types.js +2 -0
  167. package/dist/esm/types.js.map +1 -0
  168. package/dist/esm/utils/const.d.ts +1 -0
  169. package/dist/esm/utils/const.js +2 -0
  170. package/dist/esm/utils/const.js.map +1 -0
  171. package/dist/esm/utils/index.d.ts +2 -0
  172. package/dist/esm/utils/index.js +3 -0
  173. package/dist/esm/utils/index.js.map +1 -0
  174. package/dist/esm/utils/reactVersion.d.ts +7 -0
  175. package/dist/esm/utils/reactVersion.js +19 -0
  176. package/dist/esm/utils/reactVersion.js.map +1 -0
  177. package/package.json +53 -0
@@ -0,0 +1,7 @@
1
+ export { FaroErrorBoundary, faroErrorBoundaryInitialState, withFaroErrorBoundary } from './errorBoundary';
2
+ export { ReactIntegration } from './instrumentation';
3
+ export { FaroProfiler, withFaroProfiler } from './profiler';
4
+ export { FaroRoute, FaroRoutes, NavigationType, ReactRouterVersion, setReactRouterV4V5SSRDependencies, setReactRouterV6SSRDependencies, } from './router';
5
+ export { getMajorReactVersion, isReactVersionAtLeast, isReactVersionAtLeast16, isReactVersionAtLeast17, isReactVersionAtLeast18, reactVersion, reactVersionMajor, } from './utils';
6
+ export { faro, allLogLevels, BaseExtension, BaseInstrumentation, BaseTransport, browserMeta, buildStackFrame, ConsoleInstrumentation, ConsoleTransport, Conventions, createInternalLogger, createPromiseBuffer, createSession, deepEqual, defaultExceptionType, defaultEventDomain, defaultGlobalObjectKey, defaultInternalLoggerLevel, defaultLogLevel, defaultMetas, ErrorsInstrumentation, FetchTransport, getCurrentTimestamp, getDataFromSafariExtensions, getInternalFaroFromGlobalObject, getStackFramesFromError, getTransportBody, getWebInstrumentations, globalObject, initializeFaro, internalGlobalObjectKey, isArray, isBoolean, isDomError, isDomException, isElement, isElementDefined, isError, isErrorDefined, isErrorEvent, isEvent, isEventDefined, isFunction, isInstanceOf, isInt, isInternalFaroOnGlobalObject, isMap, isMapDefined, isNull, isNumber, isObject, isPrimitive, isRegExp, isString, isSymbol, isSyntheticEvent, isThenable, isToString, isTypeof, isUndefined, InternalLoggerLevel, LogLevel, makeCoreConfig, noop, pageMeta, parseStacktrace, setInternalFaroOnGlobalObject, TransportItemType, transportItemTypeToBodyKey, VERSION, WebVitalsInstrumentation, } from '@grafana/faro-web-sdk';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,6BAA6B,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAS1G,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAG5D,OAAO,EACL,SAAS,EACT,UAAU,EACV,cAAc,EACd,kBAAkB,EAClB,iCAAiC,EACjC,+BAA+B,GAChC,MAAM,UAAU,CAAC;AAqBlB,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,YAAY,EACZ,iBAAiB,GAClB,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,WAAW,EACX,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,eAAe,EACf,YAAY,EACZ,qBAAqB,EACrB,cAAc,EACd,mBAAmB,EACnB,2BAA2B,EAC3B,+BAA+B,EAC/B,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,uBAAuB,EACvB,OAAO,EACP,SAAS,EACT,UAAU,EACV,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,OAAO,EACP,cAAc,EACd,YAAY,EACZ,OAAO,EACP,cAAc,EACd,UAAU,EACV,YAAY,EACZ,KAAK,EACL,4BAA4B,EAC5B,KAAK,EACL,YAAY,EACZ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,UAAU,EACV,QAAQ,EACR,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,6BAA6B,EAC7B,iBAAiB,EACjB,0BAA0B,EAC1B,OAAO,EACP,wBAAwB,GACzB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { BaseInstrumentation } from '@grafana/faro-web-sdk';
2
+ import type { ReactIntegrationConfig } from './types';
3
+ export declare class ReactIntegration extends BaseInstrumentation {
4
+ private config;
5
+ name: string;
6
+ version: string;
7
+ constructor(config?: ReactIntegrationConfig);
8
+ initialize(): void;
9
+ }
@@ -0,0 +1,14 @@
1
+ import { BaseInstrumentation, VERSION } from '@grafana/faro-web-sdk';
2
+ import { initializeReactRouterInstrumentation } from './router';
3
+ export class ReactIntegration extends BaseInstrumentation {
4
+ constructor(config = {}) {
5
+ super();
6
+ this.config = config;
7
+ this.name = '@grafana/faro-react';
8
+ this.version = VERSION;
9
+ }
10
+ initialize() {
11
+ initializeReactRouterInstrumentation(this.config, this.faro);
12
+ }
13
+ }
14
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAErE,OAAO,EAAE,oCAAoC,EAAE,MAAM,UAAU,CAAC;AAGhE,MAAM,OAAO,gBAAiB,SAAQ,mBAAmB;IAIvD,YAAoB,SAAiC,EAAE;QACrD,KAAK,EAAE,CAAC;QADU,WAAM,GAAN,MAAM,CAA6B;QAHvD,SAAI,GAAG,qBAAqB,CAAC;QAC7B,YAAO,GAAG,OAAO,CAAC;IAIlB,CAAC;IAED,UAAU;QACR,oCAAoC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC;CACF"}
@@ -0,0 +1,24 @@
1
+ import type { Span } from '@opentelemetry/api';
2
+ import { Component } from 'react';
3
+ import type { ReactNode } from 'react';
4
+ export interface FaroProfilerProps {
5
+ children: ReactNode;
6
+ name: string;
7
+ updateProps: Record<string, unknown>;
8
+ }
9
+ export declare class FaroProfiler extends Component<FaroProfilerProps> {
10
+ protected mountSpan: Span | undefined;
11
+ protected mountSpanEndTime: number | undefined;
12
+ protected updateSpan: Span | undefined;
13
+ private get isOtelInitialized();
14
+ private get otel();
15
+ private get tracer();
16
+ private createSpan;
17
+ private createChildSpan;
18
+ constructor(props: FaroProfilerProps);
19
+ componentDidMount(): void;
20
+ shouldComponentUpdate({ updateProps }: FaroProfilerProps): boolean;
21
+ componentDidUpdate(): void;
22
+ componentWillUnmount(): void;
23
+ render(): ReactNode;
24
+ }
@@ -0,0 +1,86 @@
1
+ import { Component } from 'react';
2
+ import { faro, VERSION } from '@grafana/faro-web-sdk';
3
+ export class FaroProfiler extends Component {
4
+ constructor(props) {
5
+ var _a;
6
+ super(props);
7
+ this.mountSpan = undefined;
8
+ this.mountSpanEndTime = undefined;
9
+ this.updateSpan = undefined;
10
+ if (this.isOtelInitialized) {
11
+ this.mountSpan = this.createSpan('componentMount');
12
+ }
13
+ else {
14
+ (_a = faro.internalLogger) === null || _a === void 0 ? void 0 : _a.error('The Faro React Profiler requires tracing instrumentation. Please enable it in the "instrumentations" section of your config.');
15
+ }
16
+ }
17
+ get isOtelInitialized() {
18
+ var _a;
19
+ return !!((_a = faro.api) === null || _a === void 0 ? void 0 : _a.isOTELInitialized());
20
+ }
21
+ get otel() {
22
+ var _a;
23
+ return (_a = faro.api) === null || _a === void 0 ? void 0 : _a.getOTEL();
24
+ }
25
+ get tracer() {
26
+ var _a;
27
+ return (_a = this.otel) === null || _a === void 0 ? void 0 : _a.trace.getTracer('@grafana/faro-react', VERSION);
28
+ }
29
+ createSpan(spanName, options) {
30
+ var _a, _b;
31
+ const span = this.tracer.startSpan(spanName, {
32
+ startTime: options === null || options === void 0 ? void 0 : options.startTime,
33
+ attributes: Object.assign({ 'react.component.name': this.props.name }, ((_a = options === null || options === void 0 ? void 0 : options.attributes) !== null && _a !== void 0 ? _a : {})),
34
+ });
35
+ (_b = this.otel) === null || _b === void 0 ? void 0 : _b.trace.setSpan(this.otel.context.active(), span);
36
+ if (options === null || options === void 0 ? void 0 : options.endTime) {
37
+ span.end(options.endTime);
38
+ }
39
+ return span;
40
+ }
41
+ createChildSpan(spanName, parent, options) {
42
+ var _a;
43
+ let span;
44
+ (_a = this.otel) === null || _a === void 0 ? void 0 : _a.context.with(this.otel.trace.setSpan(this.otel.context.active(), parent), () => {
45
+ span = this.createSpan(spanName, options);
46
+ });
47
+ return span;
48
+ }
49
+ componentDidMount() {
50
+ if (this.isOtelInitialized && this.mountSpan) {
51
+ this.mountSpanEndTime = Date.now();
52
+ this.mountSpan.end(this.mountSpanEndTime);
53
+ }
54
+ }
55
+ shouldComponentUpdate({ updateProps }) {
56
+ if (this.isOtelInitialized && this.mountSpan && updateProps !== this.props.updateProps) {
57
+ const changedProps = Object.keys(updateProps).filter((key) => updateProps[key] !== this.props.updateProps[key]);
58
+ if (changedProps.length > 0) {
59
+ this.updateSpan = this.createChildSpan('componentUpdate', this.mountSpan, {
60
+ attributes: {
61
+ 'react.component.changed_props': changedProps,
62
+ },
63
+ });
64
+ }
65
+ }
66
+ return true;
67
+ }
68
+ componentDidUpdate() {
69
+ if (this.isOtelInitialized && this.updateSpan) {
70
+ this.updateSpan.end();
71
+ this.updateSpan = undefined;
72
+ }
73
+ }
74
+ componentWillUnmount() {
75
+ if (this.isOtelInitialized && this.mountSpan) {
76
+ this.createChildSpan('componentRender', this.mountSpan, {
77
+ startTime: this.mountSpanEndTime,
78
+ endTime: Date.now(),
79
+ });
80
+ }
81
+ }
82
+ render() {
83
+ return this.props.children;
84
+ }
85
+ }
86
+ //# sourceMappingURL=FaroProfiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaroProfiler.js","sourceRoot":"","sources":["../../../src/profiler/FaroProfiler.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAQtD,MAAM,OAAO,YAAa,SAAQ,SAA4B;IAoD5D,YAAY,KAAwB;;QAClC,KAAK,CAAC,KAAK,CAAC,CAAC;QApDL,cAAS,GAAqB,SAAS,CAAC;QACxC,qBAAgB,GAAuB,SAAS,CAAC;QACjD,eAAU,GAAqB,SAAS,CAAC;QAoDjD,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;SACpD;aAAM;YACL,MAAA,IAAI,CAAC,cAAc,0CAAE,KAAK,CACxB,8HAA8H,CAC/H,CAAC;SACH;IACH,CAAC;IAzDD,IAAY,iBAAiB;;QAC3B,OAAO,CAAC,CAAC,CAAA,MAAA,IAAI,CAAC,GAAG,0CAAE,iBAAiB,EAAE,CAAA,CAAC;IACzC,CAAC;IAED,IAAY,IAAI;;QACd,OAAO,MAAA,IAAI,CAAC,GAAG,0CAAE,OAAO,EAAG,CAAC;IAC9B,CAAC;IAED,IAAY,MAAM;;QAChB,OAAO,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAK,CAAC,SAAS,CAAC,qBAAqB,EAAE,OAAO,CAAE,CAAC;IACrE,CAAC;IAEO,UAAU,CAChB,QAAgB,EAChB,OAA2E;;QAE3E,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;YAC3C,SAAS,EAAE,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS;YAC7B,UAAU,kBACR,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,IACpC,CAAC,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,UAAU,mCAAI,EAAE,CAAC,CAC/B;SACF,CAAC,CAAC;QAEH,MAAA,IAAI,CAAC,IAAI,0CAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;QAE3D,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,OAAO,EAAE;YACpB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SAC3B;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,eAAe,CACrB,QAAgB,EAChB,MAAY,EACZ,OAA2E;;QAE3E,IAAI,IAAU,CAAC;QAEf,MAAA,IAAI,CAAC,IAAI,0CAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE;YACxF,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,OAAO,IAAK,CAAC;IACf,CAAC;IAcQ,iBAAiB;QACxB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;YAC5C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;SAC3C;IACH,CAAC;IAEQ,qBAAqB,CAAC,EAAE,WAAW,EAAqB;QAC/D,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,IAAI,WAAW,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;YACtF,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;YAEhH,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,EAAE;oBACxE,UAAU,EAAE;wBACV,+BAA+B,EAAE,YAAY;qBAC9C;iBACF,CAAC,CAAC;aACJ;SACF;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEQ,kBAAkB;QACzB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,UAAU,EAAE;YAC7C,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC7B;IACH,CAAC;IAEQ,oBAAoB;QAC3B,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,SAAS,EAAE;YAC5C,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,IAAI,CAAC,SAAS,EAAE;gBACtD,SAAS,EAAE,IAAI,CAAC,gBAAgB;gBAChC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;aACpB,CAAC,CAAC;SACJ;IACH,CAAC;IAEQ,MAAM;QACb,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;IAC7B,CAAC;CACF"}
@@ -0,0 +1,3 @@
1
+ export { FaroProfiler } from './FaroProfiler';
2
+ export type { FaroProfilerProps } from './FaroProfiler';
3
+ export { withFaroProfiler } from './withFaroProfiler';
@@ -0,0 +1,3 @@
1
+ export { FaroProfiler } from './FaroProfiler';
2
+ export { withFaroProfiler } from './withFaroProfiler';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/profiler/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { ComponentType, FC } from 'react';
2
+ import type { FaroProfilerProps } from './FaroProfiler';
3
+ export declare function withFaroProfiler<P extends Record<string, any>>(WrappedComponent: ComponentType<P>, options?: Omit<FaroProfilerProps, 'updateProps'>): FC<P>;
@@ -0,0 +1,13 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import hoistNonReactStatics from 'hoist-non-react-statics';
3
+ import { unknownString } from '../utils';
4
+ import { FaroProfiler } from './FaroProfiler';
5
+ export function withFaroProfiler(WrappedComponent, options) {
6
+ var _a, _b, _c;
7
+ const componentDisplayName = (_c = (_b = (_a = options === null || options === void 0 ? void 0 : options.name) !== null && _a !== void 0 ? _a : WrappedComponent.displayName) !== null && _b !== void 0 ? _b : WrappedComponent.name) !== null && _c !== void 0 ? _c : unknownString;
8
+ const Component = (props) => (_jsx(FaroProfiler, Object.assign({ name: componentDisplayName, updateProps: props }, { children: _jsx(WrappedComponent, Object.assign({}, props)) })));
9
+ Component.displayName = `faroProfiler(${componentDisplayName})`;
10
+ hoistNonReactStatics(Component, WrappedComponent);
11
+ return Component;
12
+ }
13
+ //# sourceMappingURL=withFaroProfiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withFaroProfiler.js","sourceRoot":"","sources":["../../../src/profiler/withFaroProfiler.tsx"],"names":[],"mappings":";AAAA,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,MAAM,UAAU,gBAAgB,CAC9B,gBAAkC,EAClC,OAAgD;;IAEhD,MAAM,oBAAoB,GAAG,MAAA,MAAA,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,mCAAI,gBAAgB,CAAC,WAAW,mCAAI,gBAAgB,CAAC,IAAI,mCAAI,aAAa,CAAC;IAErH,MAAM,SAAS,GAAU,CAAC,KAAQ,EAAE,EAAE,CAAC,CACrC,KAAC,YAAY,kBAAC,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,KAAK,gBAC1D,KAAC,gBAAgB,oBAAK,KAAK,EAAI,IAClB,CAChB,CAAC;IAEF,SAAS,CAAC,WAAW,GAAG,gBAAgB,oBAAoB,GAAG,CAAC;IAEhE,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAElD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export { initializeReactRouterInstrumentation } from './initialize';
2
+ export { NavigationType, ReactRouterVersion } from './types';
3
+ export type { ReactRouterLocation, ReactRouterHistory } from './types';
4
+ export { FaroRoute, setReactRouterV4V5SSRDependencies } from './v4v5';
5
+ export type { ReactRouterV4V5ActiveEvent, ReactRouterV4V5Dependencies, ReactRouterV4V5RouteShape } from './v4v5';
6
+ export { FaroRoutes, setReactRouterV6SSRDependencies } from './v6';
7
+ export type { ReactRouterV6CreateRoutesFromChildren, ReactRouterV6Dependencies, ReactRouterV6MatchRoutes, ReactRouterV6Params, ReactRouterV6RouteMatch, ReactRouterV6RouteObject, ReactRouterV6RoutesProps, ReactRouterV6RoutesShape, ReactRouterV6UseLocation, ReactRouterV6UseNavigationType, } from './v6';
@@ -0,0 +1,5 @@
1
+ export { initializeReactRouterInstrumentation } from './initialize';
2
+ export { NavigationType, ReactRouterVersion } from './types';
3
+ export { FaroRoute, setReactRouterV4V5SSRDependencies } from './v4v5';
4
+ export { FaroRoutes, setReactRouterV6SSRDependencies } from './v6';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/router/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oCAAoC,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG7D,OAAO,EAAE,SAAS,EAAE,iCAAiC,EAAE,MAAM,QAAQ,CAAC;AAGtE,OAAO,EAAE,UAAU,EAAE,+BAA+B,EAAE,MAAM,MAAM,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Faro } from '@grafana/faro-web-sdk';
2
+ import type { ReactIntegrationConfig } from '../types';
3
+ export declare function initializeReactRouterInstrumentation(config: ReactIntegrationConfig, faro: Faro): void;
@@ -0,0 +1,20 @@
1
+ import { ReactRouterVersion } from './types';
2
+ import { initializeReactRouterV4V5Instrumentation } from './v4v5';
3
+ import { initializeReactRouterV6Instrumentation } from './v6';
4
+ export function initializeReactRouterInstrumentation(config, faro) {
5
+ var _a;
6
+ switch ((_a = config.router) === null || _a === void 0 ? void 0 : _a.version) {
7
+ case ReactRouterVersion.V6:
8
+ faro.internalLogger.debug('Initializing React Router V6 instrumentation');
9
+ initializeReactRouterV6Instrumentation(config.router.dependencies, faro);
10
+ break;
11
+ case ReactRouterVersion.V5:
12
+ case ReactRouterVersion.V4:
13
+ faro.internalLogger.debug(`Initializing React Router ${config.router.version} instrumentation`);
14
+ initializeReactRouterV4V5Instrumentation(config.router.dependencies, faro);
15
+ break;
16
+ default:
17
+ faro.internalLogger.debug('Skipping initialization of React Router instrumentation');
18
+ }
19
+ }
20
+ //# sourceMappingURL=initialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../src/router/initialize.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,wCAAwC,EAAE,MAAM,QAAQ,CAAC;AAClE,OAAO,EAAE,sCAAsC,EAAE,MAAM,MAAM,CAAC;AAE9D,MAAM,UAAU,oCAAoC,CAAC,MAA8B,EAAE,IAAU;;IAC7F,QAAQ,MAAA,MAAM,CAAC,MAAM,0CAAE,OAAO,EAAE;QAC9B,KAAK,kBAAkB,CAAC,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;YAC1E,sCAAsC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YACzE,MAAM;QAER,KAAK,kBAAkB,CAAC,EAAE,CAAC;QAC3B,KAAK,kBAAkB,CAAC,EAAE;YACxB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,MAAM,CAAC,OAAO,kBAAkB,CAAC,CAAC;YAChG,wCAAwC,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;YAC3E,MAAM;QAER;YACE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;KACxF;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface ReactRouterLocation<S extends any = unknown> {
2
+ hash: string;
3
+ key: string;
4
+ pathname: string;
5
+ search: string;
6
+ state: S;
7
+ }
8
+ export interface ReactRouterHistory extends Record<string, any> {
9
+ listen?: (cb: (location: ReactRouterLocation, action: NavigationType) => void) => void;
10
+ location?: ReactRouterLocation;
11
+ }
12
+ export declare enum ReactRouterVersion {
13
+ V4 = "v4",
14
+ V5 = "v5",
15
+ V6 = "v6"
16
+ }
17
+ export declare enum NavigationType {
18
+ Pop = "POP",
19
+ Push = "PUSH",
20
+ Replace = "REPLACE"
21
+ }
@@ -0,0 +1,13 @@
1
+ export var ReactRouterVersion;
2
+ (function (ReactRouterVersion) {
3
+ ReactRouterVersion["V4"] = "v4";
4
+ ReactRouterVersion["V5"] = "v5";
5
+ ReactRouterVersion["V6"] = "v6";
6
+ })(ReactRouterVersion || (ReactRouterVersion = {}));
7
+ export var NavigationType;
8
+ (function (NavigationType) {
9
+ NavigationType["Pop"] = "POP";
10
+ NavigationType["Push"] = "PUSH";
11
+ NavigationType["Replace"] = "REPLACE";
12
+ })(NavigationType || (NavigationType = {}));
13
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/router/types.ts"],"names":[],"mappings":"AAaA,MAAM,CAAN,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC5B,+BAAS,CAAA;IACT,+BAAS,CAAA;IACT,+BAAS,CAAA;AACX,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAED,MAAM,CAAN,IAAY,cAIX;AAJD,WAAY,cAAc;IACxB,6BAAW,CAAA;IACX,+BAAa,CAAA;IACb,qCAAmB,CAAA;AACrB,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB"}
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { ReactRouterV4V5RouteProps } from './types';
3
+ export declare function FaroRoute(props: ReactRouterV4V5RouteProps): JSX.Element;
@@ -0,0 +1,11 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { setActiveEventRoute } from './activeEvent';
3
+ import { Route } from './dependencies';
4
+ export function FaroRoute(props) {
5
+ var _a;
6
+ if ((_a = props === null || props === void 0 ? void 0 : props.computedMatch) === null || _a === void 0 ? void 0 : _a.isExact) {
7
+ setActiveEventRoute(props.computedMatch.path);
8
+ }
9
+ return _jsx(Route, Object.assign({}, props));
10
+ }
11
+ //# sourceMappingURL=FaroRoute.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaroRoute.js","sourceRoot":"","sources":["../../../../src/router/v4v5/FaroRoute.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAGvC,MAAM,UAAU,SAAS,CAAC,KAAgC;;IACxD,IAAI,MAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,aAAa,0CAAE,OAAO,EAAE;QACjC,mBAAmB,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;KAC/C;IAED,OAAO,KAAC,KAAK,oBAAK,KAAK,EAAI,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ReactRouterV4V5ActiveEvent } from './types';
2
+ export declare let activeEvent: ReactRouterV4V5ActiveEvent | undefined;
3
+ export declare function createNewActiveEvent(url: string): ReactRouterV4V5ActiveEvent;
4
+ export declare function setActiveEventRoute(route: string): void;
5
+ export declare function sendActiveEvent(): void;
@@ -0,0 +1,19 @@
1
+ import { faro } from './dependencies';
2
+ export let activeEvent = undefined;
3
+ export function createNewActiveEvent(url) {
4
+ activeEvent = {
5
+ url,
6
+ route: '',
7
+ };
8
+ return activeEvent;
9
+ }
10
+ export function setActiveEventRoute(route) {
11
+ if (activeEvent) {
12
+ activeEvent.route = route;
13
+ }
14
+ }
15
+ export function sendActiveEvent() {
16
+ faro.api.pushEvent('routeChange', activeEvent, undefined, { skipDedupe: true });
17
+ activeEvent = undefined;
18
+ }
19
+ //# sourceMappingURL=activeEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"activeEvent.js","sourceRoot":"","sources":["../../../../src/router/v4v5/activeEvent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAGtC,MAAM,CAAC,IAAI,WAAW,GAA2C,SAAS,CAAC;AAE3E,MAAM,UAAU,oBAAoB,CAAC,GAAW;IAC9C,WAAW,GAAG;QACZ,GAAG;QACH,KAAK,EAAE,EAAE;KACV,CAAC;IAEF,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,IAAI,WAAW,EAAE;QACf,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;KAC3B;AACH,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhF,WAAW,GAAG,SAAS,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Faro } from '@grafana/faro-web-sdk';
2
+ import type { ReactRouterHistory } from '../types';
3
+ import type { ReactRouterV4V5Dependencies, ReactRouterV4V5RouteShape } from './types';
4
+ export declare let isInitialized: boolean;
5
+ export declare let faro: Faro;
6
+ export declare let history: ReactRouterHistory;
7
+ export declare let Route: ReactRouterV4V5RouteShape;
8
+ export declare function setDependencies(dependencies: ReactRouterV4V5Dependencies, newFaro: Faro): void;
9
+ export declare function setReactRouterV4V5SSRDependencies(newDependencies: Pick<ReactRouterV4V5Dependencies, 'Route'>): void;
@@ -0,0 +1,14 @@
1
+ export let isInitialized = false;
2
+ export let faro;
3
+ export let history;
4
+ export let Route;
5
+ export function setDependencies(dependencies, newFaro) {
6
+ isInitialized = true;
7
+ faro = newFaro;
8
+ history = dependencies.history;
9
+ Route = dependencies.Route;
10
+ }
11
+ export function setReactRouterV4V5SSRDependencies(newDependencies) {
12
+ Route = newDependencies.Route;
13
+ }
14
+ //# sourceMappingURL=dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../src/router/v4v5/dependencies.ts"],"names":[],"mappings":"AAKA,MAAM,CAAC,IAAI,aAAa,GAAG,KAAK,CAAC;AACjC,MAAM,CAAC,IAAI,IAAU,CAAC;AACtB,MAAM,CAAC,IAAI,OAA2B,CAAC;AACvC,MAAM,CAAC,IAAI,KAAgC,CAAC;AAE5C,MAAM,UAAU,eAAe,CAAC,YAAyC,EAAE,OAAa;IACtF,aAAa,GAAG,IAAI,CAAC;IAErB,IAAI,GAAG,OAAO,CAAC;IACf,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;IAC/B,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,iCAAiC,CAAC,eAA2D;IAC3G,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC;AAChC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { setReactRouterV4V5SSRDependencies } from './dependencies';
2
+ export { FaroRoute } from './FaroRoute';
3
+ export { initializeReactRouterV4V5Instrumentation } from './initialize';
4
+ export type { ReactRouterV4V5ActiveEvent, ReactRouterV4V5Dependencies, ReactRouterV4V5RouteShape } from './types';
@@ -0,0 +1,4 @@
1
+ export { setReactRouterV4V5SSRDependencies } from './dependencies';
2
+ export { FaroRoute } from './FaroRoute';
3
+ export { initializeReactRouterV4V5Instrumentation } from './initialize';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/router/v4v5/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iCAAiC,EAAE,MAAM,gBAAgB,CAAC;AAEnE,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAE,wCAAwC,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Faro } from '@grafana/faro-web-sdk';
2
+ import type { ReactRouterV4V5Dependencies } from './types';
3
+ export declare function initializeReactRouterV4V5Instrumentation(dependencies: ReactRouterV4V5Dependencies, faro: Faro): void;
@@ -0,0 +1,23 @@
1
+ import hoistNonReactStatics from 'hoist-non-react-statics';
2
+ import { globalObject } from '@grafana/faro-web-sdk';
3
+ import { NavigationType } from '../types';
4
+ import { createNewActiveEvent, sendActiveEvent } from './activeEvent';
5
+ import { setDependencies } from './dependencies';
6
+ import { FaroRoute } from './FaroRoute';
7
+ export function initializeReactRouterV4V5Instrumentation(dependencies, faro) {
8
+ var _a, _b, _c, _d;
9
+ const Route = dependencies.Route;
10
+ const componentDisplayName = (_a = Route.displayName) !== null && _a !== void 0 ? _a : Route.name;
11
+ FaroRoute.displayName = `faroRoute(${componentDisplayName})`;
12
+ hoistNonReactStatics(FaroRoute, Route);
13
+ setDependencies(dependencies, faro);
14
+ createNewActiveEvent((_b = globalObject.location) === null || _b === void 0 ? void 0 : _b.href);
15
+ (_d = (_c = dependencies.history).listen) === null || _d === void 0 ? void 0 : _d.call(_c, (_location, action) => {
16
+ var _a;
17
+ if (action === NavigationType.Push || action === NavigationType.Pop) {
18
+ sendActiveEvent();
19
+ createNewActiveEvent((_a = globalObject.location) === null || _a === void 0 ? void 0 : _a.href);
20
+ }
21
+ });
22
+ }
23
+ //# sourceMappingURL=initialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../src/router/v4v5/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,MAAM,UAAU,wCAAwC,CAAC,YAAyC,EAAE,IAAU;;IAC5G,MAAM,KAAK,GAAG,YAAY,CAAC,KAA0B,CAAC;IACtD,MAAM,oBAAoB,GAAG,MAAA,KAAK,CAAC,WAAW,mCAAI,KAAK,CAAC,IAAI,CAAC;IAC5D,SAA+B,CAAC,WAAW,GAAG,aAAa,oBAAoB,GAAG,CAAC;IACpF,oBAAoB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAEvC,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEpC,oBAAoB,CAAC,MAAA,YAAY,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC;IAElD,MAAA,MAAA,YAAY,CAAC,OAAO,EAAC,MAAM,mDAAG,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE;;QAClD,IAAI,MAAM,KAAK,cAAc,CAAC,IAAI,IAAI,MAAM,KAAK,cAAc,CAAC,GAAG,EAAE;YACnE,eAAe,EAAE,CAAC;YAElB,oBAAoB,CAAC,MAAA,YAAY,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC;SACnD;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { ReactRouterHistory } from '../types';
2
+ export declare type ReactRouterV4V5RouteShape = any;
3
+ export interface ReactRouterV4V5RouteProps extends Record<string, any> {
4
+ computedMatch?: {
5
+ isExact: boolean;
6
+ path: string;
7
+ };
8
+ }
9
+ export interface ReactRouterV4V5Dependencies {
10
+ history: ReactRouterHistory;
11
+ Route: ReactRouterV4V5RouteShape;
12
+ }
13
+ export interface ReactRouterV4V5ActiveEvent extends Record<string, string> {
14
+ url: string;
15
+ route: string;
16
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/router/v4v5/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ /// <reference types="react" />
2
+ import type { ReactRouterV6RoutesProps } from './types';
3
+ export declare function FaroRoutes(props: ReactRouterV6RoutesProps): JSX.Element;
@@ -0,0 +1,24 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useEffect, useMemo } from 'react';
3
+ import { globalObject } from '@grafana/faro-web-sdk';
4
+ import { NavigationType } from '../types';
5
+ import { createRoutesFromChildren, faro, isInitialized, Routes, useLocation, useNavigationType } from './dependencies';
6
+ import { getRouteFromLocation } from './utils';
7
+ export function FaroRoutes(props) {
8
+ var _a;
9
+ const location = useLocation === null || useLocation === void 0 ? void 0 : useLocation();
10
+ const navigationType = useNavigationType === null || useNavigationType === void 0 ? void 0 : useNavigationType();
11
+ const routes = useMemo(() => { var _a; return (_a = createRoutesFromChildren === null || createRoutesFromChildren === void 0 ? void 0 : createRoutesFromChildren(props.children)) !== null && _a !== void 0 ? _a : []; }, [props.children]);
12
+ useEffect(() => {
13
+ var _a;
14
+ if (isInitialized && (navigationType === NavigationType.Push || navigationType === NavigationType.Pop)) {
15
+ faro.api.pushEvent('routeChange', {
16
+ url: (_a = globalObject.location) === null || _a === void 0 ? void 0 : _a.href,
17
+ route: getRouteFromLocation(routes, location),
18
+ });
19
+ }
20
+ }, [location, navigationType, routes]);
21
+ const ActualRoutes = (_a = props.routesComponent) !== null && _a !== void 0 ? _a : Routes;
22
+ return _jsx(ActualRoutes, Object.assign({}, props));
23
+ }
24
+ //# sourceMappingURL=FaroRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaroRoutes.js","sourceRoot":"","sources":["../../../../src/router/v6/FaroRoutes.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,wBAAwB,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEvH,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,UAAU,UAAU,CAAC,KAA+B;;IACxD,MAAM,QAAQ,GAAG,WAAW,aAAX,WAAW,uBAAX,WAAW,EAAI,CAAC;IACjC,MAAM,cAAc,GAAG,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,EAAI,CAAC;IAE7C,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,WAAC,OAAA,MAAA,wBAAwB,aAAxB,wBAAwB,uBAAxB,wBAAwB,CAAG,KAAK,CAAC,QAAQ,CAAC,mCAAI,EAAE,CAAA,EAAA,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjG,SAAS,CAAC,GAAG,EAAE;;QACb,IAAI,aAAa,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,IAAI,IAAI,cAAc,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE;YACtG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE;gBAChC,GAAG,EAAE,MAAA,YAAY,CAAC,QAAQ,0CAAE,IAAI;gBAChC,KAAK,EAAE,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC;aAC9C,CAAC,CAAC;SACJ;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,MAAA,KAAK,CAAC,eAAe,mCAAI,MAAM,CAAC;IAErD,OAAO,KAAC,YAAY,oBAAK,KAAK,EAAI,CAAC;AACrC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { Faro } from '@grafana/faro-web-sdk';
2
+ import type { ReactRouterV6CreateRoutesFromChildren, ReactRouterV6Dependencies, ReactRouterV6MatchRoutes, ReactRouterV6RoutesShape, ReactRouterV6UseLocation, ReactRouterV6UseNavigationType } from './types';
3
+ export declare let isInitialized: boolean;
4
+ export declare let faro: Faro;
5
+ export declare let createRoutesFromChildren: ReactRouterV6CreateRoutesFromChildren;
6
+ export declare let matchRoutes: ReactRouterV6MatchRoutes;
7
+ export declare let Routes: ReactRouterV6RoutesShape;
8
+ export declare let useLocation: ReactRouterV6UseLocation;
9
+ export declare let useNavigationType: ReactRouterV6UseNavigationType;
10
+ export declare function setDependencies(newDependencies: ReactRouterV6Dependencies, newFaro: Faro): void;
11
+ export declare function setReactRouterV6SSRDependencies(newDependencies: Pick<ReactRouterV6Dependencies, 'Routes'>): void;
@@ -0,0 +1,20 @@
1
+ export let isInitialized = false;
2
+ export let faro;
3
+ export let createRoutesFromChildren;
4
+ export let matchRoutes;
5
+ export let Routes;
6
+ export let useLocation;
7
+ export let useNavigationType;
8
+ export function setDependencies(newDependencies, newFaro) {
9
+ isInitialized = true;
10
+ faro = newFaro;
11
+ createRoutesFromChildren = newDependencies.createRoutesFromChildren;
12
+ matchRoutes = newDependencies.matchRoutes;
13
+ Routes = newDependencies.Routes;
14
+ useLocation = newDependencies.useLocation;
15
+ useNavigationType = newDependencies.useNavigationType;
16
+ }
17
+ export function setReactRouterV6SSRDependencies(newDependencies) {
18
+ Routes = newDependencies.Routes;
19
+ }
20
+ //# sourceMappingURL=dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../src/router/v6/dependencies.ts"],"names":[],"mappings":"AAWA,MAAM,CAAC,IAAI,aAAa,GAAG,KAAK,CAAC;AACjC,MAAM,CAAC,IAAI,IAAU,CAAC;AACtB,MAAM,CAAC,IAAI,wBAA+D,CAAC;AAC3E,MAAM,CAAC,IAAI,WAAqC,CAAC;AACjD,MAAM,CAAC,IAAI,MAAgC,CAAC;AAC5C,MAAM,CAAC,IAAI,WAAqC,CAAC;AACjD,MAAM,CAAC,IAAI,iBAAiD,CAAC;AAE7D,MAAM,UAAU,eAAe,CAAC,eAA0C,EAAE,OAAa;IACvF,aAAa,GAAG,IAAI,CAAC;IAErB,IAAI,GAAG,OAAO,CAAC;IACf,wBAAwB,GAAG,eAAe,CAAC,wBAAwB,CAAC;IACpE,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;IAC1C,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAChC,WAAW,GAAG,eAAe,CAAC,WAAW,CAAC;IAC1C,iBAAiB,GAAG,eAAe,CAAC,iBAAiB,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,eAA0D;IACxG,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;AAClC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { setReactRouterV6SSRDependencies } from './dependencies';
2
+ export { FaroRoutes } from './FaroRoutes';
3
+ export { initializeReactRouterV6Instrumentation } from './initialize';
4
+ export type { ReactRouterV6CreateRoutesFromChildren, ReactRouterV6Dependencies, ReactRouterV6MatchRoutes, ReactRouterV6Params, ReactRouterV6RouteMatch, ReactRouterV6RouteObject, ReactRouterV6RoutesProps, ReactRouterV6RoutesShape, ReactRouterV6UseLocation, ReactRouterV6UseNavigationType, } from './types';
@@ -0,0 +1,4 @@
1
+ export { setReactRouterV6SSRDependencies } from './dependencies';
2
+ export { FaroRoutes } from './FaroRoutes';
3
+ export { initializeReactRouterV6Instrumentation } from './initialize';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/router/v6/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,+BAA+B,EAAE,MAAM,gBAAgB,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,sCAAsC,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Faro } from '@grafana/faro-web-sdk';
2
+ import type { ReactRouterV6Dependencies } from './types';
3
+ export declare function initializeReactRouterV6Instrumentation(dependencies: ReactRouterV6Dependencies, faro: Faro): void;
@@ -0,0 +1,8 @@
1
+ import hoistNonReactStatics from 'hoist-non-react-statics';
2
+ import { setDependencies } from './dependencies';
3
+ import { FaroRoutes } from './FaroRoutes';
4
+ export function initializeReactRouterV6Instrumentation(dependencies, faro) {
5
+ hoistNonReactStatics(FaroRoutes, dependencies.Routes);
6
+ setDependencies(dependencies, faro);
7
+ }
8
+ //# sourceMappingURL=initialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../src/router/v6/initialize.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAI3D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAG1C,MAAM,UAAU,sCAAsC,CAAC,YAAuC,EAAE,IAAU;IACxG,oBAAoB,CAAC,UAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAEtD,eAAe,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type { ReactRouterLocation } from '../types';
3
+ export interface ReactRouterV6RouteObject {
4
+ caseSensitive?: boolean;
5
+ children?: ReactRouterV6RouteObject[];
6
+ element?: ReactNode;
7
+ index?: boolean;
8
+ path?: string;
9
+ }
10
+ export interface ReactRouterV6RoutesProps {
11
+ children?: ReactNode;
12
+ location?: Partial<ReactRouterLocation> | string;
13
+ routesComponent?: ReactRouterV6RoutesShape;
14
+ }
15
+ export declare type ReactRouterV6Params<Key extends string = string> = {
16
+ readonly [key in Key]: string | undefined;
17
+ };
18
+ export interface ReactRouterV6RouteMatch<ParamKey extends string = string> {
19
+ params: ReactRouterV6Params<ParamKey>;
20
+ pathname: string;
21
+ pathnameBase: string;
22
+ route: ReactRouterV6RouteObject;
23
+ }
24
+ export declare type ReactRouterV6CreateRoutesFromChildren = (children: ReactNode) => ReactRouterV6RouteObject[];
25
+ export declare type ReactRouterV6MatchRoutes = (routes: ReactRouterV6RouteObject[], location: Partial<ReactRouterLocation> | string, basename?: string) => ReactRouterV6RouteMatch[] | null;
26
+ export declare type ReactRouterV6RoutesShape = (props: ReactRouterV6RoutesProps) => ReactElement | null;
27
+ export declare type ReactRouterV6UseLocation = () => ReactRouterLocation;
28
+ export declare type ReactRouterV6UseNavigationType = () => 'POP' | 'PUSH' | 'REPLACE';
29
+ export interface ReactRouterV6Dependencies {
30
+ createRoutesFromChildren: ReactRouterV6CreateRoutesFromChildren;
31
+ matchRoutes: ReactRouterV6MatchRoutes;
32
+ Routes: ReactRouterV6RoutesShape;
33
+ useLocation: ReactRouterV6UseLocation;
34
+ useNavigationType: ReactRouterV6UseNavigationType;
35
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/router/v6/types.ts"],"names":[],"mappings":""}