@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,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initializeReactRouterV4V5Instrumentation = exports.FaroRoute = exports.setReactRouterV4V5SSRDependencies = void 0;
4
+ var dependencies_1 = require("./dependencies");
5
+ Object.defineProperty(exports, "setReactRouterV4V5SSRDependencies", { enumerable: true, get: function () { return dependencies_1.setReactRouterV4V5SSRDependencies; } });
6
+ var FaroRoute_1 = require("./FaroRoute");
7
+ Object.defineProperty(exports, "FaroRoute", { enumerable: true, get: function () { return FaroRoute_1.FaroRoute; } });
8
+ var initialize_1 = require("./initialize");
9
+ Object.defineProperty(exports, "initializeReactRouterV4V5Instrumentation", { enumerable: true, get: function () { return initialize_1.initializeReactRouterV4V5Instrumentation; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/router/v4v5/index.ts"],"names":[],"mappings":";;;AAAA,+CAAmE;AAA1D,iIAAA,iCAAiC,OAAA;AAE1C,yCAAwC;AAA/B,sGAAA,SAAS,OAAA;AAElB,2CAAwE;AAA/D,sIAAA,wCAAwC,OAAA"}
@@ -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,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.initializeReactRouterV4V5Instrumentation = void 0;
7
+ var hoist_non_react_statics_1 = __importDefault(require("hoist-non-react-statics"));
8
+ var faro_web_sdk_1 = require("@grafana/faro-web-sdk");
9
+ var types_1 = require("../types");
10
+ var activeEvent_1 = require("./activeEvent");
11
+ var dependencies_1 = require("./dependencies");
12
+ var FaroRoute_1 = require("./FaroRoute");
13
+ function initializeReactRouterV4V5Instrumentation(dependencies, faro) {
14
+ var _a, _b, _c, _d;
15
+ var Route = dependencies.Route;
16
+ var componentDisplayName = (_a = Route.displayName) !== null && _a !== void 0 ? _a : Route.name;
17
+ FaroRoute_1.FaroRoute.displayName = "faroRoute(".concat(componentDisplayName, ")");
18
+ (0, hoist_non_react_statics_1.default)(FaroRoute_1.FaroRoute, Route);
19
+ (0, dependencies_1.setDependencies)(dependencies, faro);
20
+ (0, activeEvent_1.createNewActiveEvent)((_b = faro_web_sdk_1.globalObject.location) === null || _b === void 0 ? void 0 : _b.href);
21
+ (_d = (_c = dependencies.history).listen) === null || _d === void 0 ? void 0 : _d.call(_c, function (_location, action) {
22
+ var _a;
23
+ if (action === types_1.NavigationType.Push || action === types_1.NavigationType.Pop) {
24
+ (0, activeEvent_1.sendActiveEvent)();
25
+ (0, activeEvent_1.createNewActiveEvent)((_a = faro_web_sdk_1.globalObject.location) === null || _a === void 0 ? void 0 : _a.href);
26
+ }
27
+ });
28
+ }
29
+ exports.initializeReactRouterV4V5Instrumentation = initializeReactRouterV4V5Instrumentation;
30
+ //# sourceMappingURL=initialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../src/router/v4v5/initialize.ts"],"names":[],"mappings":";;;;;;AAAA,oFAA2D;AAG3D,sDAAqD;AAGrD,kCAA0C;AAC1C,6CAAsE;AACtE,+CAAiD;AACjD,yCAAwC;AAGxC,SAAgB,wCAAwC,CAAC,YAAyC,EAAE,IAAU;;IAC5G,IAAM,KAAK,GAAG,YAAY,CAAC,KAA0B,CAAC;IACtD,IAAM,oBAAoB,GAAG,MAAA,KAAK,CAAC,WAAW,mCAAI,KAAK,CAAC,IAAI,CAAC;IAC5D,qBAA+B,CAAC,WAAW,GAAG,oBAAa,oBAAoB,MAAG,CAAC;IACpF,IAAA,iCAAoB,EAAC,qBAAS,EAAE,KAAK,CAAC,CAAC;IAEvC,IAAA,8BAAe,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAEpC,IAAA,kCAAoB,EAAC,MAAA,2BAAY,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC;IAElD,MAAA,MAAA,YAAY,CAAC,OAAO,EAAC,MAAM,mDAAG,UAAC,SAAS,EAAE,MAAM;;QAC9C,IAAI,MAAM,KAAK,sBAAc,CAAC,IAAI,IAAI,MAAM,KAAK,sBAAc,CAAC,GAAG,EAAE;YACnE,IAAA,6BAAe,GAAE,CAAC;YAElB,IAAA,kCAAoB,EAAC,MAAA,2BAAY,CAAC,QAAQ,0CAAE,IAAI,CAAC,CAAC;SACnD;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAjBD,4FAiBC"}
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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,39 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.FaroRoutes = void 0;
15
+ var jsx_runtime_1 = require("react/jsx-runtime");
16
+ var react_1 = require("react");
17
+ var faro_web_sdk_1 = require("@grafana/faro-web-sdk");
18
+ var types_1 = require("../types");
19
+ var dependencies_1 = require("./dependencies");
20
+ var utils_1 = require("./utils");
21
+ function FaroRoutes(props) {
22
+ var _a;
23
+ var location = dependencies_1.useLocation === null || dependencies_1.useLocation === void 0 ? void 0 : (0, dependencies_1.useLocation)();
24
+ var navigationType = dependencies_1.useNavigationType === null || dependencies_1.useNavigationType === void 0 ? void 0 : (0, dependencies_1.useNavigationType)();
25
+ var routes = (0, react_1.useMemo)(function () { var _a; return (_a = dependencies_1.createRoutesFromChildren === null || dependencies_1.createRoutesFromChildren === void 0 ? void 0 : (0, dependencies_1.createRoutesFromChildren)(props.children)) !== null && _a !== void 0 ? _a : []; }, [props.children]);
26
+ (0, react_1.useEffect)(function () {
27
+ var _a;
28
+ if (dependencies_1.isInitialized && (navigationType === types_1.NavigationType.Push || navigationType === types_1.NavigationType.Pop)) {
29
+ dependencies_1.faro.api.pushEvent('routeChange', {
30
+ url: (_a = faro_web_sdk_1.globalObject.location) === null || _a === void 0 ? void 0 : _a.href,
31
+ route: (0, utils_1.getRouteFromLocation)(routes, location),
32
+ });
33
+ }
34
+ }, [location, navigationType, routes]);
35
+ var ActualRoutes = (_a = props.routesComponent) !== null && _a !== void 0 ? _a : dependencies_1.Routes;
36
+ return (0, jsx_runtime_1.jsx)(ActualRoutes, __assign({}, props));
37
+ }
38
+ exports.FaroRoutes = FaroRoutes;
39
+ //# sourceMappingURL=FaroRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaroRoutes.js","sourceRoot":"","sources":["../../../../src/router/v6/FaroRoutes.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,+BAA2C;AAE3C,sDAAqD;AAErD,kCAA0C;AAC1C,+CAAuH;AAEvH,iCAA+C;AAE/C,SAAgB,UAAU,CAAC,KAA+B;;IACxD,IAAM,QAAQ,GAAG,0BAAW,aAAX,0BAAW,2BAAX,0BAAW,GAAI,CAAC;IACjC,IAAM,cAAc,GAAG,gCAAiB,aAAjB,gCAAiB,2BAAjB,gCAAiB,GAAI,CAAC;IAE7C,IAAM,MAAM,GAAG,IAAA,eAAO,EAAC,sBAAM,OAAA,MAAA,uCAAwB,aAAxB,uCAAwB,2BAAxB,uCAAwB,EAAG,KAAK,CAAC,QAAQ,CAAC,mCAAI,EAAE,CAAA,EAAA,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjG,IAAA,iBAAS,EAAC;;QACR,IAAI,4BAAa,IAAI,CAAC,cAAc,KAAK,sBAAc,CAAC,IAAI,IAAI,cAAc,KAAK,sBAAc,CAAC,GAAG,CAAC,EAAE;YACtG,mBAAI,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE;gBAChC,GAAG,EAAE,MAAA,2BAAY,CAAC,QAAQ,0CAAE,IAAI;gBAChC,KAAK,EAAE,IAAA,4BAAoB,EAAC,MAAM,EAAE,QAAQ,CAAC;aAC9C,CAAC,CAAC;SACJ;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;IAEvC,IAAM,YAAY,GAAG,MAAA,KAAK,CAAC,eAAe,mCAAI,qBAAM,CAAC;IAErD,OAAO,uBAAC,YAAY,eAAK,KAAK,EAAI,CAAC;AACrC,CAAC;AAlBD,gCAkBC"}
@@ -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,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.setReactRouterV6SSRDependencies = exports.setDependencies = exports.useNavigationType = exports.useLocation = exports.Routes = exports.matchRoutes = exports.createRoutesFromChildren = exports.faro = exports.isInitialized = void 0;
4
+ exports.isInitialized = false;
5
+ function setDependencies(newDependencies, newFaro) {
6
+ exports.isInitialized = true;
7
+ exports.faro = newFaro;
8
+ exports.createRoutesFromChildren = newDependencies.createRoutesFromChildren;
9
+ exports.matchRoutes = newDependencies.matchRoutes;
10
+ exports.Routes = newDependencies.Routes;
11
+ exports.useLocation = newDependencies.useLocation;
12
+ exports.useNavigationType = newDependencies.useNavigationType;
13
+ }
14
+ exports.setDependencies = setDependencies;
15
+ function setReactRouterV6SSRDependencies(newDependencies) {
16
+ exports.Routes = newDependencies.Routes;
17
+ }
18
+ exports.setReactRouterV6SSRDependencies = setReactRouterV6SSRDependencies;
19
+ //# sourceMappingURL=dependencies.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["../../../../src/router/v6/dependencies.ts"],"names":[],"mappings":";;;AAWW,QAAA,aAAa,GAAG,KAAK,CAAC;AAQjC,SAAgB,eAAe,CAAC,eAA0C,EAAE,OAAa;IACvF,qBAAa,GAAG,IAAI,CAAC;IAErB,YAAI,GAAG,OAAO,CAAC;IACf,gCAAwB,GAAG,eAAe,CAAC,wBAAwB,CAAC;IACpE,mBAAW,GAAG,eAAe,CAAC,WAAW,CAAC;IAC1C,cAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAChC,mBAAW,GAAG,eAAe,CAAC,WAAW,CAAC;IAC1C,yBAAiB,GAAG,eAAe,CAAC,iBAAiB,CAAC;AACxD,CAAC;AATD,0CASC;AAED,SAAgB,+BAA+B,CAAC,eAA0D;IACxG,cAAM,GAAG,eAAe,CAAC,MAAM,CAAC;AAClC,CAAC;AAFD,0EAEC"}
@@ -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,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.initializeReactRouterV6Instrumentation = exports.FaroRoutes = exports.setReactRouterV6SSRDependencies = void 0;
4
+ var dependencies_1 = require("./dependencies");
5
+ Object.defineProperty(exports, "setReactRouterV6SSRDependencies", { enumerable: true, get: function () { return dependencies_1.setReactRouterV6SSRDependencies; } });
6
+ var FaroRoutes_1 = require("./FaroRoutes");
7
+ Object.defineProperty(exports, "FaroRoutes", { enumerable: true, get: function () { return FaroRoutes_1.FaroRoutes; } });
8
+ var initialize_1 = require("./initialize");
9
+ Object.defineProperty(exports, "initializeReactRouterV6Instrumentation", { enumerable: true, get: function () { return initialize_1.initializeReactRouterV6Instrumentation; } });
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/router/v6/index.ts"],"names":[],"mappings":";;;AAAA,+CAAiE;AAAxD,+HAAA,+BAA+B,OAAA;AAExC,2CAA0C;AAAjC,wGAAA,UAAU,OAAA;AAEnB,2CAAsE;AAA7D,oIAAA,sCAAsC,OAAA"}
@@ -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,15 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.initializeReactRouterV6Instrumentation = void 0;
7
+ var hoist_non_react_statics_1 = __importDefault(require("hoist-non-react-statics"));
8
+ var dependencies_1 = require("./dependencies");
9
+ var FaroRoutes_1 = require("./FaroRoutes");
10
+ function initializeReactRouterV6Instrumentation(dependencies, faro) {
11
+ (0, hoist_non_react_statics_1.default)(FaroRoutes_1.FaroRoutes, dependencies.Routes);
12
+ (0, dependencies_1.setDependencies)(dependencies, faro);
13
+ }
14
+ exports.initializeReactRouterV6Instrumentation = initializeReactRouterV6Instrumentation;
15
+ //# sourceMappingURL=initialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../src/router/v6/initialize.ts"],"names":[],"mappings":";;;;;;AAAA,oFAA2D;AAI3D,+CAAiD;AACjD,2CAA0C;AAG1C,SAAgB,sCAAsC,CAAC,YAAuC,EAAE,IAAU;IACxG,IAAA,iCAAoB,EAAC,uBAAU,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAEtD,IAAA,8BAAe,EAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAJD,wFAIC"}
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/router/v6/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ReactRouterLocation } from '../types';
2
+ import type { ReactRouterV6RouteObject } from './types';
3
+ export declare function getNumberOfUrlSegments(url: string): number;
4
+ export declare function getRouteFromLocation(routes: ReactRouterV6RouteObject[], location: ReactRouterLocation): string;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRouteFromLocation = exports.getNumberOfUrlSegments = void 0;
4
+ var dependencies_1 = require("./dependencies");
5
+ function getNumberOfUrlSegments(url) {
6
+ return url.split(/\\?\//).filter(function (currentSegment) { return currentSegment.length > 0 && currentSegment !== ','; }).length;
7
+ }
8
+ exports.getNumberOfUrlSegments = getNumberOfUrlSegments;
9
+ function getRouteFromLocation(routes, location) {
10
+ if (!routes || routes.length === 0) {
11
+ return location.pathname;
12
+ }
13
+ var matchedRoutes = (0, dependencies_1.matchRoutes)(routes, location);
14
+ var pathBuilder = '';
15
+ if (matchedRoutes) {
16
+ for (var x = 0; x < matchedRoutes.length; x++) {
17
+ var branch = matchedRoutes[x];
18
+ var route = branch.route;
19
+ if (route) {
20
+ if (route.index) {
21
+ return branch.pathname;
22
+ }
23
+ var path = route.path;
24
+ if (path) {
25
+ path = path.startsWith('/') ? path : "/".concat(path);
26
+ pathBuilder += path;
27
+ if (branch.pathname === location.pathname) {
28
+ if (getNumberOfUrlSegments(pathBuilder) !== getNumberOfUrlSegments(branch.pathname)) {
29
+ return path;
30
+ }
31
+ return pathBuilder;
32
+ }
33
+ }
34
+ }
35
+ }
36
+ }
37
+ return location.pathname;
38
+ }
39
+ exports.getRouteFromLocation = getRouteFromLocation;
40
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/router/v6/utils.ts"],"names":[],"mappings":";;;AACA,+CAA6C;AAG7C,SAAgB,sBAAsB,CAAC,GAAW;IAChD,OAAO,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAC,cAAc,IAAK,OAAA,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,KAAK,GAAG,EAAnD,CAAmD,CAAC,CAAC,MAAM,CAAC;AACnH,CAAC;AAFD,wDAEC;AAED,SAAgB,oBAAoB,CAAC,MAAkC,EAAE,QAA6B;IACpG,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QAClC,OAAO,QAAQ,CAAC,QAAQ,CAAC;KAC1B;IAED,IAAM,aAAa,GAAG,IAAA,0BAAW,EAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAEpD,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,IAAI,aAAa,EAAE;QACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC7C,IAAM,MAAM,GAAG,aAAa,CAAC,CAAC,CAAE,CAAC;YACjC,IAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;YAE3B,IAAI,KAAK,EAAE;gBACT,IAAI,KAAK,CAAC,KAAK,EAAE;oBACf,OAAO,MAAM,CAAC,QAAQ,CAAC;iBACxB;gBAED,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;gBAEtB,IAAI,IAAI,EAAE;oBACR,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAI,IAAI,CAAE,CAAC;oBAEhD,WAAW,IAAI,IAAI,CAAC;oBAEpB,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,EAAE;wBACzC,IAAI,sBAAsB,CAAC,WAAW,CAAC,KAAK,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE;4BACnF,OAAO,IAAI,CAAC;yBACb;wBAED,OAAO,WAAW,CAAC;qBACpB;iBACF;aACF;SACF;KACF;IAED,OAAO,QAAQ,CAAC,QAAQ,CAAC;AAC3B,CAAC;AAvCD,oDAuCC"}
@@ -0,0 +1,12 @@
1
+ import type { ReactRouterV4V5Dependencies, ReactRouterV6Dependencies, ReactRouterVersion } from './router';
2
+ export interface ReactRouterV4V5Config {
3
+ version: ReactRouterVersion.V4 | ReactRouterVersion.V5;
4
+ dependencies: ReactRouterV4V5Dependencies;
5
+ }
6
+ export interface ReactRouterV6Config {
7
+ version: ReactRouterVersion.V6;
8
+ dependencies: ReactRouterV6Dependencies;
9
+ }
10
+ export interface ReactIntegrationConfig {
11
+ router?: ReactRouterV4V5Config | ReactRouterV6Config;
12
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1 @@
1
+ export declare const unknownString = "unknown";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unknownString = void 0;
4
+ exports.unknownString = 'unknown';
5
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/utils/const.ts"],"names":[],"mappings":";;;AAAa,QAAA,aAAa,GAAG,SAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { unknownString } from './const';
2
+ export { getMajorReactVersion, isReactVersionAtLeast, isReactVersionAtLeast16, isReactVersionAtLeast17, isReactVersionAtLeast18, reactVersion, reactVersionMajor, } from './reactVersion';
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.reactVersionMajor = exports.reactVersion = exports.isReactVersionAtLeast18 = exports.isReactVersionAtLeast17 = exports.isReactVersionAtLeast16 = exports.isReactVersionAtLeast = exports.getMajorReactVersion = exports.unknownString = void 0;
4
+ var const_1 = require("./const");
5
+ Object.defineProperty(exports, "unknownString", { enumerable: true, get: function () { return const_1.unknownString; } });
6
+ var reactVersion_1 = require("./reactVersion");
7
+ Object.defineProperty(exports, "getMajorReactVersion", { enumerable: true, get: function () { return reactVersion_1.getMajorReactVersion; } });
8
+ Object.defineProperty(exports, "isReactVersionAtLeast", { enumerable: true, get: function () { return reactVersion_1.isReactVersionAtLeast; } });
9
+ Object.defineProperty(exports, "isReactVersionAtLeast16", { enumerable: true, get: function () { return reactVersion_1.isReactVersionAtLeast16; } });
10
+ Object.defineProperty(exports, "isReactVersionAtLeast17", { enumerable: true, get: function () { return reactVersion_1.isReactVersionAtLeast17; } });
11
+ Object.defineProperty(exports, "isReactVersionAtLeast18", { enumerable: true, get: function () { return reactVersion_1.isReactVersionAtLeast18; } });
12
+ Object.defineProperty(exports, "reactVersion", { enumerable: true, get: function () { return reactVersion_1.reactVersion; } });
13
+ Object.defineProperty(exports, "reactVersionMajor", { enumerable: true, get: function () { return reactVersion_1.reactVersionMajor; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;AAAA,iCAAwC;AAA/B,sGAAA,aAAa,OAAA;AAEtB,+CAQwB;AAPtB,oHAAA,oBAAoB,OAAA;AACpB,qHAAA,qBAAqB,OAAA;AACrB,uHAAA,uBAAuB,OAAA;AACvB,uHAAA,uBAAuB,OAAA;AACvB,uHAAA,uBAAuB,OAAA;AACvB,4GAAA,YAAY,OAAA;AACZ,iHAAA,iBAAiB,OAAA"}
@@ -0,0 +1,7 @@
1
+ export declare const reactVersion: string;
2
+ export declare const reactVersionMajor: number | null;
3
+ export declare const isReactVersionAtLeast18: boolean;
4
+ export declare const isReactVersionAtLeast17: boolean;
5
+ export declare const isReactVersionAtLeast16: boolean;
6
+ export declare function getMajorReactVersion(): number | null;
7
+ export declare function isReactVersionAtLeast(version: number): boolean;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isReactVersionAtLeast = exports.getMajorReactVersion = exports.isReactVersionAtLeast16 = exports.isReactVersionAtLeast17 = exports.isReactVersionAtLeast18 = exports.reactVersionMajor = exports.reactVersion = void 0;
4
+ var react_1 = require("react");
5
+ exports.reactVersion = react_1.version;
6
+ exports.reactVersionMajor = getMajorReactVersion();
7
+ exports.isReactVersionAtLeast18 = isReactVersionAtLeast(18);
8
+ exports.isReactVersionAtLeast17 = isReactVersionAtLeast(17);
9
+ exports.isReactVersionAtLeast16 = isReactVersionAtLeast(16);
10
+ function getMajorReactVersion() {
11
+ var major = exports.reactVersion.split('.');
12
+ try {
13
+ return major[0] ? parseInt(major[0], 10) : null;
14
+ }
15
+ catch (err) {
16
+ return null;
17
+ }
18
+ }
19
+ exports.getMajorReactVersion = getMajorReactVersion;
20
+ function isReactVersionAtLeast(version) {
21
+ return exports.reactVersionMajor === null ? false : exports.reactVersionMajor >= version;
22
+ }
23
+ exports.isReactVersionAtLeast = isReactVersionAtLeast;
24
+ //# sourceMappingURL=reactVersion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reactVersion.js","sourceRoot":"","sources":["../../../src/utils/reactVersion.ts"],"names":[],"mappings":";;;AAAA,+BAAgC;AAEnB,QAAA,YAAY,GAAG,eAAO,CAAC;AACvB,QAAA,iBAAiB,GAAG,oBAAoB,EAAE,CAAC;AAC3C,QAAA,uBAAuB,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;AACpD,QAAA,uBAAuB,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;AACpD,QAAA,uBAAuB,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC;AAEjE,SAAgB,oBAAoB;IAClC,IAAM,KAAK,GAAG,oBAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,IAAI;QACF,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;KACjD;IAAC,OAAO,GAAG,EAAE;QACZ,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AARD,oDAQC;AAED,SAAgB,qBAAqB,CAAC,OAAe;IACnD,OAAO,yBAAiB,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAiB,IAAI,OAAO,CAAC;AAC3E,CAAC;AAFD,sDAEC"}
@@ -0,0 +1,14 @@
1
+ import { Component } from 'react';
2
+ import type { ErrorInfo, ReactNode } from 'react';
3
+ import type { FaroErrorBoundaryProps, FaroErrorBoundaryState } from './types';
4
+ export declare class FaroErrorBoundary extends Component<FaroErrorBoundaryProps, FaroErrorBoundaryState> {
5
+ state: FaroErrorBoundaryState;
6
+ constructor(props: FaroErrorBoundaryProps);
7
+ getErrorWithComponentStack(error: Error, errorInfo: ErrorInfo): Error;
8
+ static getDerivedStateFromError(error: Error): FaroErrorBoundaryState;
9
+ componentDidCatch(error: Error, errorInfo: ErrorInfo): void;
10
+ componentDidMount(): void;
11
+ componentWillUnmount(): void;
12
+ resetErrorBoundary(): void;
13
+ render(): ReactNode;
14
+ }
@@ -0,0 +1,63 @@
1
+ import { Component, isValidElement } from 'react';
2
+ import { faro, isFunction } from '@grafana/faro-web-sdk';
3
+ import { isReactVersionAtLeast17 } from '../utils';
4
+ import { faroErrorBoundaryInitialState } from './const';
5
+ export class FaroErrorBoundary extends Component {
6
+ constructor(props) {
7
+ super(props);
8
+ this.state = faroErrorBoundaryInitialState;
9
+ this.resetErrorBoundary = this.resetErrorBoundary.bind(this);
10
+ }
11
+ getErrorWithComponentStack(error, errorInfo) {
12
+ if (!isReactVersionAtLeast17 || !errorInfo.componentStack) {
13
+ return error;
14
+ }
15
+ const newError = new Error(error.message);
16
+ newError.name = `React ErrorBoundary ${error.name}`;
17
+ newError.stack = errorInfo.componentStack;
18
+ return newError;
19
+ }
20
+ static getDerivedStateFromError(error) {
21
+ return {
22
+ hasError: true,
23
+ error,
24
+ };
25
+ }
26
+ componentDidCatch(error, errorInfo) {
27
+ var _a, _b, _c, _d;
28
+ const errorWithComponentStack = this.getErrorWithComponentStack(error, errorInfo);
29
+ (_b = (_a = this.props).beforeCapture) === null || _b === void 0 ? void 0 : _b.call(_a, errorWithComponentStack);
30
+ faro.api.pushError(errorWithComponentStack);
31
+ (_d = (_c = this.props).onError) === null || _d === void 0 ? void 0 : _d.call(_c, errorWithComponentStack);
32
+ this.setState({ hasError: true, error });
33
+ }
34
+ componentDidMount() {
35
+ var _a, _b;
36
+ (_b = (_a = this.props).onMount) === null || _b === void 0 ? void 0 : _b.call(_a);
37
+ }
38
+ componentWillUnmount() {
39
+ var _a, _b;
40
+ (_b = (_a = this.props).onUnmount) === null || _b === void 0 ? void 0 : _b.call(_a, this.state.error);
41
+ }
42
+ resetErrorBoundary() {
43
+ var _a, _b;
44
+ (_b = (_a = this.props).onReset) === null || _b === void 0 ? void 0 : _b.call(_a, this.state.error);
45
+ this.setState(faroErrorBoundaryInitialState);
46
+ }
47
+ render() {
48
+ if (!this.state.hasError) {
49
+ return isFunction(this.props.children) ? this.props.children() : this.props.children;
50
+ }
51
+ const element = !isFunction(this.props.fallback)
52
+ ? this.props.fallback
53
+ : this.props.fallback(this.state.error, this.resetErrorBoundary);
54
+ if (isValidElement(element)) {
55
+ return element;
56
+ }
57
+ if (this.props.fallback) {
58
+ faro.internalLogger.warn('ErrorBoundary\n', 'Cannot get a valid ReactElement from "fallback"');
59
+ }
60
+ return null;
61
+ }
62
+ }
63
+ //# sourceMappingURL=FaroErrorBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FaroErrorBoundary.js","sourceRoot":"","sources":["../../../src/errorBoundary/FaroErrorBoundary.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { FaroErrorBoundaryState } from './types';
2
+ export declare const faroErrorBoundaryInitialState: FaroErrorBoundaryState;
@@ -0,0 +1,5 @@
1
+ export const faroErrorBoundaryInitialState = {
2
+ hasError: false,
3
+ error: null,
4
+ };
5
+ //# sourceMappingURL=const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"const.js","sourceRoot":"","sources":["../../../src/errorBoundary/const.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,6BAA6B,GAA2B;IACnE,QAAQ,EAAE,KAAK;IACf,KAAK,EAAE,IAAI;CACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { faroErrorBoundaryInitialState } from './const';
2
+ export { FaroErrorBoundary } from './FaroErrorBoundary';
3
+ export type { FaroErrorBoundaryFallbackRender, FaroErrorBoundaryProps, FaroErrorBoundaryState, ReactNodeRender, ReactProps, } from './types';
4
+ export { withFaroErrorBoundary } from './withFaroErrorBoundary';
@@ -0,0 +1,4 @@
1
+ export { faroErrorBoundaryInitialState } from './const';
2
+ export { FaroErrorBoundary } from './FaroErrorBoundary';
3
+ export { withFaroErrorBoundary } from './withFaroErrorBoundary';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/errorBoundary/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,6BAA6B,EAAE,MAAM,SAAS,CAAC;AAExD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAUxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ReactElement, ReactNode } from 'react';
2
+ import type { Faro } from '@grafana/faro-web-sdk';
3
+ export declare type ReactNodeRender = () => ReactNode;
4
+ export declare type ReactProps = Record<string, any>;
5
+ export declare type FaroErrorBoundaryFallbackRender = (error: Error, resetError: VoidFunction) => ReactElement;
6
+ export interface FaroErrorBoundaryProps {
7
+ faro?: Faro;
8
+ beforeCapture?: (error: Error | null) => void;
9
+ children?: ReactNode | ReactNodeRender;
10
+ fallback?: ReactElement | FaroErrorBoundaryFallbackRender;
11
+ onError?: (error: Error) => void;
12
+ onMount?: VoidFunction;
13
+ onReset?: (error: Error | null) => void;
14
+ onUnmount?: (error: Error | null) => void;
15
+ }
16
+ export interface FaroErrorBoundaryState {
17
+ hasError: boolean;
18
+ error: Error | null;
19
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/errorBoundary/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { ComponentType, FC } from 'react';
2
+ import type { FaroErrorBoundaryProps, ReactProps } from './types';
3
+ export declare function withFaroErrorBoundary<P extends ReactProps = {}>(WrappedComponent: ComponentType<P>, errorBoundaryProps: FaroErrorBoundaryProps): 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 { FaroErrorBoundary } from './FaroErrorBoundary';
5
+ export function withFaroErrorBoundary(WrappedComponent, errorBoundaryProps) {
6
+ var _a, _b;
7
+ const componentDisplayName = (_b = (_a = WrappedComponent.displayName) !== null && _a !== void 0 ? _a : WrappedComponent.name) !== null && _b !== void 0 ? _b : unknownString;
8
+ const Component = (wrappedComponentProps) => (_jsx(FaroErrorBoundary, Object.assign({}, errorBoundaryProps, { children: _jsx(WrappedComponent, Object.assign({}, wrappedComponentProps)) })));
9
+ Component.displayName = `faroErrorBoundary(${componentDisplayName})`;
10
+ hoistNonReactStatics(Component, WrappedComponent);
11
+ return Component;
12
+ }
13
+ //# sourceMappingURL=withFaroErrorBoundary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"withFaroErrorBoundary.js","sourceRoot":"","sources":["../../../src/errorBoundary/withFaroErrorBoundary.tsx"],"names":[],"mappings":";AAAA,OAAO,oBAAoB,MAAM,yBAAyB,CAAC;AAG3D,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,MAAM,UAAU,qBAAqB,CACnC,gBAAkC,EAClC,kBAA0C;;IAE1C,MAAM,oBAAoB,GAAG,MAAA,MAAA,gBAAgB,CAAC,WAAW,mCAAI,gBAAgB,CAAC,IAAI,mCAAI,aAAa,CAAC;IAEpG,MAAM,SAAS,GAAU,CAAC,qBAAwB,EAAE,EAAE,CAAC,CACrD,KAAC,iBAAiB,oBAAK,kBAAkB,cACvC,KAAC,gBAAgB,oBAAK,qBAAqB,EAAI,IAC7B,CACrB,CAAC;IAEF,SAAS,CAAC,WAAW,GAAG,qBAAqB,oBAAoB,GAAG,CAAC;IAErE,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAElD,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,11 @@
1
+ export { FaroErrorBoundary, faroErrorBoundaryInitialState, withFaroErrorBoundary } from './errorBoundary';
2
+ export type { FaroErrorBoundaryFallbackRender, FaroErrorBoundaryProps, FaroErrorBoundaryState, ReactNodeRender, ReactProps, } from './errorBoundary';
3
+ export { ReactIntegration } from './instrumentation';
4
+ export { FaroProfiler, withFaroProfiler } from './profiler';
5
+ export type { FaroProfilerProps } from './profiler';
6
+ export { FaroRoute, FaroRoutes, NavigationType, ReactRouterVersion, setReactRouterV4V5SSRDependencies, setReactRouterV6SSRDependencies, } from './router';
7
+ export type { ReactRouterHistory, ReactRouterLocation, ReactRouterV4V5ActiveEvent, ReactRouterV4V5Dependencies, ReactRouterV4V5RouteShape, ReactRouterV6CreateRoutesFromChildren, ReactRouterV6Dependencies, ReactRouterV6MatchRoutes, ReactRouterV6Params, ReactRouterV6RouteMatch, ReactRouterV6RouteObject, ReactRouterV6RoutesProps, ReactRouterV6RoutesShape, ReactRouterV6UseLocation, ReactRouterV6UseNavigationType, } from './router';
8
+ export type { ReactIntegrationConfig, ReactRouterV4V5Config, ReactRouterV6Config } from './types';
9
+ export { getMajorReactVersion, isReactVersionAtLeast, isReactVersionAtLeast16, isReactVersionAtLeast17, isReactVersionAtLeast18, reactVersion, reactVersionMajor, } from './utils';
10
+ 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';
11
+ export type { Faro, API, APIEvent, BaseObject, BaseObjectKey, BaseObjectPrimitiveValue, BaseObjectValue, BeforeSendHook, BrowserConfig, Config, ConsoleInstrumentationOptions, ConsoleTransportOptions, ErrorEvent, ExceptionEvent, ExceptionStackFrame, ExceptionsAPI, ExtendedError, ExtendedPromiseRejectionEvent, FetchTransportOptions, FetchTransportRequestOptions, GlobalObject, Instrumentation, InstrumentationLibrarySpan, Instrumentations, InternalLogger, LogContext, LogEvent, LogsAPI, MeasurementEvent, MeasurementsAPI, Meta, MetaAPI, MetaApp, MetaAttributes, MetaBrowser, MetaGetter, MetaItem, MetaPage, Metas, MetaSDK, MetaSDKIntegration, MetaSession, MetaUser, OTELApi, Patterns, PushErrorOptions, PushLogOptions, PushMeasurementOptions, ResourceSpan, Stacktrace, StacktraceParser, TraceContext, TraceEvent, TracesAPI, Transport, TransportBody, TransportItem, TransportItemPayload, Transports, UnpatchedConsole, } from '@grafana/faro-web-sdk';