@grafana/faro-react 1.4.2 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +117 -5
- package/dist/bundle/faro-react.iife.js +3 -3
- package/dist/bundle/types/index.d.ts +1 -1
- package/dist/bundle/types/router/index.d.ts +2 -2
- package/dist/bundle/types/router/types.d.ts +2 -1
- package/dist/bundle/types/router/v6/index.d.ts +3 -2
- package/dist/bundle/types/router/v6/initialize.d.ts +2 -1
- package/dist/bundle/types/router/v6/routerDependencies.d.ts +2 -1
- package/dist/bundle/types/router/v6/types.d.ts +3 -0
- package/dist/bundle/types/router/v6/withFaroRouterInstrumentation.d.ts +16 -0
- package/dist/bundle/types/types.d.ts +6 -2
- package/dist/cjs/index.js +3 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/router/index.js +2 -1
- package/dist/cjs/router/index.js.map +1 -1
- package/dist/cjs/router/initialize.js +7 -2
- package/dist/cjs/router/initialize.js.map +1 -1
- package/dist/cjs/router/types.js +1 -0
- package/dist/cjs/router/types.js.map +1 -1
- package/dist/cjs/router/v6/FaroRoutes.js +0 -4
- package/dist/cjs/router/v6/FaroRoutes.js.map +1 -1
- package/dist/cjs/router/v6/index.js +4 -1
- package/dist/cjs/router/v6/index.js.map +1 -1
- package/dist/cjs/router/v6/initialize.js +5 -1
- package/dist/cjs/router/v6/initialize.js.map +1 -1
- package/dist/cjs/router/v6/routerDependencies.js +6 -1
- package/dist/cjs/router/v6/routerDependencies.js.map +1 -1
- package/dist/cjs/router/v6/types.js.map +1 -1
- package/dist/cjs/router/v6/withFaroRouterInstrumentation.js +43 -0
- package/dist/cjs/router/v6/withFaroRouterInstrumentation.js.map +1 -0
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/router/index.js +1 -1
- package/dist/esm/router/index.js.map +1 -1
- package/dist/esm/router/initialize.js +8 -3
- package/dist/esm/router/initialize.js.map +1 -1
- package/dist/esm/router/types.js +1 -0
- package/dist/esm/router/types.js.map +1 -1
- package/dist/esm/router/v6/FaroRoutes.js +0 -4
- package/dist/esm/router/v6/FaroRoutes.js.map +1 -1
- package/dist/esm/router/v6/index.js +2 -1
- package/dist/esm/router/v6/index.js.map +1 -1
- package/dist/esm/router/v6/initialize.js +4 -1
- package/dist/esm/router/v6/initialize.js.map +1 -1
- package/dist/esm/router/v6/routerDependencies.js +4 -0
- package/dist/esm/router/v6/routerDependencies.js.map +1 -1
- package/dist/esm/router/v6/types.js.map +1 -1
- package/dist/esm/router/v6/withFaroRouterInstrumentation.js +28 -0
- package/dist/esm/router/v6/withFaroRouterInstrumentation.js.map +1 -0
- package/dist/esm/types.js.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/router/index.d.ts +2 -2
- package/dist/types/router/types.d.ts +2 -1
- package/dist/types/router/v6/index.d.ts +3 -2
- package/dist/types/router/v6/initialize.d.ts +2 -1
- package/dist/types/router/v6/routerDependencies.d.ts +2 -1
- package/dist/types/router/v6/types.d.ts +3 -0
- package/dist/types/router/v6/withFaroRouterInstrumentation.d.ts +16 -0
- package/dist/types/types.d.ts +6 -2
- package/package.json +4 -4
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { EVENT_ROUTE_CHANGE, globalObject } from '@grafana/faro-web-sdk';
|
|
2
|
+
import { api } from '../../dependencies';
|
|
3
|
+
import { NavigationType } from '../types';
|
|
4
|
+
import { isInitialized } from './routerDependencies';
|
|
5
|
+
import { getRouteFromLocation } from './utils';
|
|
6
|
+
/**
|
|
7
|
+
* To use with React Router 6.4 data APIs.
|
|
8
|
+
*/
|
|
9
|
+
export function withFaroRouterInstrumentation(router) {
|
|
10
|
+
let lastRoute = {};
|
|
11
|
+
router.subscribe((state) => {
|
|
12
|
+
var _a, _b;
|
|
13
|
+
const navigationType = state.historyAction;
|
|
14
|
+
const location = state.location;
|
|
15
|
+
const routes = router.routes;
|
|
16
|
+
if (isInitialized && (navigationType === NavigationType.Push || navigationType === NavigationType.Pop)) {
|
|
17
|
+
const route = getRouteFromLocation(routes, location);
|
|
18
|
+
const url = (_a = globalObject.location) === null || _a === void 0 ? void 0 : _a.href;
|
|
19
|
+
api.pushEvent(EVENT_ROUTE_CHANGE, Object.assign({ toRoute: route, toUrl: (_b = globalObject.location) === null || _b === void 0 ? void 0 : _b.href }, lastRoute));
|
|
20
|
+
lastRoute = {
|
|
21
|
+
fromRoute: route,
|
|
22
|
+
fromUrl: url,
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
return router;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=withFaroRouterInstrumentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withFaroRouterInstrumentation.js","sourceRoot":"","sources":["../../../../src/router/v6/withFaroRouterInstrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEzE,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,cAAc,EAAuB,MAAM,UAAU,CAAC;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAa/C;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAA4B,MAAS;IAChF,IAAI,SAAS,GAAmC,EAAE,CAAC;IAEnD,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;;QACzB,MAAM,cAAc,GAAmB,KAAK,CAAC,aAAa,CAAC;QAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE7B,IAAI,aAAa,IAAI,CAAC,cAAc,KAAK,cAAc,CAAC,IAAI,IAAI,cAAc,KAAK,cAAc,CAAC,GAAG,CAAC,EAAE;YACtG,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,MAAA,YAAY,CAAC,QAAQ,0CAAE,IAAI,CAAC;YAExC,GAAG,CAAC,SAAS,CAAC,kBAAkB,kBAC9B,OAAO,EAAE,KAAK,EACd,KAAK,EAAE,MAAA,YAAY,CAAC,QAAQ,0CAAE,IAAI,IAC/B,SAAS,EACZ,CAAC;YAEH,SAAS,GAAG;gBACV,SAAS,EAAE,KAAK;gBAChB,OAAO,EAAE,GAAG;aACb,CAAC;SACH;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC","sourcesContent":["import { EVENT_ROUTE_CHANGE, globalObject } from '@grafana/faro-web-sdk';\n\nimport { api } from '../../dependencies';\nimport { NavigationType, ReactRouterLocation } from '../types';\n\nimport { isInitialized } from './routerDependencies';\nimport type { EventRouteTransitionAttributes, ReactRouterV6RouteObject } from './types';\nimport { getRouteFromLocation } from './utils';\n\ninterface RouterState {\n historyAction: NavigationType | any;\n location: ReactRouterLocation;\n}\n\ninterface Router {\n state: RouterState;\n routes: ReactRouterV6RouteObject[];\n subscribe(fn: (state: RouterState) => void): () => void;\n}\n\n/**\n * To use with React Router 6.4 data APIs.\n */\nexport function withFaroRouterInstrumentation<R extends Router = Router>(router: R) {\n let lastRoute: EventRouteTransitionAttributes = {};\n\n router.subscribe((state) => {\n const navigationType: NavigationType = state.historyAction;\n const location = state.location;\n const routes = router.routes;\n\n if (isInitialized && (navigationType === NavigationType.Push || navigationType === NavigationType.Pop)) {\n const route = getRouteFromLocation(routes, location);\n const url = globalObject.location?.href;\n\n api.pushEvent(EVENT_ROUTE_CHANGE, {\n toRoute: route,\n toUrl: globalObject.location?.href,\n ...lastRoute,\n });\n\n lastRoute = {\n fromRoute: route,\n fromUrl: url,\n };\n }\n });\n\n return router;\n}\n"]}
|
package/dist/esm/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n ReactRouterV4V5Dependencies,\n ReactRouterV6DataRouterDependencies,\n ReactRouterV6Dependencies,\n ReactRouterVersion,\n} from './router';\n\nexport interface ReactRouterV4V5Config {\n version: ReactRouterVersion.V4 | ReactRouterVersion.V5;\n dependencies: ReactRouterV4V5Dependencies;\n}\n\nexport interface ReactRouterV6Config {\n version: ReactRouterVersion.V6;\n dependencies: ReactRouterV6Dependencies;\n}\n\nexport interface ReactRouterV6DataRouterConfig {\n version: ReactRouterVersion.V6_data_router;\n dependencies: ReactRouterV6DataRouterDependencies;\n}\n\nexport interface ReactIntegrationConfig {\n router?: ReactRouterV4V5Config | ReactRouterV6Config | ReactRouterV6DataRouterConfig;\n}\n"]}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export type { FaroErrorBoundaryFallbackRender, FaroErrorBoundaryProps, FaroError
|
|
|
3
3
|
export { ReactIntegration } from './instrumentation';
|
|
4
4
|
export { FaroProfiler, withFaroProfiler } from './profiler';
|
|
5
5
|
export type { FaroProfilerProps } from './profiler';
|
|
6
|
-
export { FaroRoute, FaroRoutes, NavigationType, ReactRouterVersion, setReactRouterV4V5SSRDependencies, setReactRouterV6SSRDependencies, } from './router';
|
|
6
|
+
export { FaroRoute, FaroRoutes, NavigationType, ReactRouterVersion, setReactRouterV4V5SSRDependencies, setReactRouterV6SSRDependencies, withFaroRouterInstrumentation, } from './router';
|
|
7
7
|
export type { ReactRouterHistory, ReactRouterLocation, ReactRouterV4V5ActiveEvent, ReactRouterV4V5Dependencies, ReactRouterV4V5RouteShape, ReactRouterV6CreateRoutesFromChildren, ReactRouterV6Dependencies, ReactRouterV6MatchRoutes, ReactRouterV6Params, ReactRouterV6RouteMatch, ReactRouterV6RouteObject, ReactRouterV6RoutesProps, ReactRouterV6RoutesShape, ReactRouterV6UseLocation, ReactRouterV6UseNavigationType, } from './router';
|
|
8
8
|
export type { ReactIntegrationConfig, ReactRouterV4V5Config, ReactRouterV6Config } from './types';
|
|
9
9
|
export { getMajorReactVersion, isReactVersionAtLeast, isReactVersionAtLeast16, isReactVersionAtLeast17, isReactVersionAtLeast18, reactVersion, reactVersionMajor, } from './utils';
|
|
@@ -3,5 +3,5 @@ export { NavigationType, ReactRouterVersion } from './types';
|
|
|
3
3
|
export type { ReactRouterLocation, ReactRouterHistory } from './types';
|
|
4
4
|
export { FaroRoute, setReactRouterV4V5SSRDependencies } from './v4v5';
|
|
5
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';
|
|
6
|
+
export { FaroRoutes, setReactRouterV6SSRDependencies, withFaroRouterInstrumentation } from './v6';
|
|
7
|
+
export type { ReactRouterV6CreateRoutesFromChildren, ReactRouterV6Dependencies, ReactRouterV6MatchRoutes, ReactRouterV6Params, ReactRouterV6RouteMatch, ReactRouterV6RouteObject, ReactRouterV6RoutesProps, ReactRouterV6RoutesShape, ReactRouterV6UseLocation, ReactRouterV6UseNavigationType, ReactRouterV6DataRouterDependencies, } from './v6';
|
|
@@ -12,7 +12,8 @@ export interface ReactRouterHistory extends Record<string, any> {
|
|
|
12
12
|
export declare enum ReactRouterVersion {
|
|
13
13
|
V4 = "v4",
|
|
14
14
|
V5 = "v5",
|
|
15
|
-
V6 = "v6"
|
|
15
|
+
V6 = "v6",
|
|
16
|
+
V6_data_router = "v6_data_router"
|
|
16
17
|
}
|
|
17
18
|
export declare enum NavigationType {
|
|
18
19
|
Pop = "POP",
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { FaroRoutes } from './FaroRoutes';
|
|
2
|
-
export { initializeReactRouterV6Instrumentation } from './initialize';
|
|
2
|
+
export { initializeReactRouterV6Instrumentation, initializeReactRouterV6DataRouterInstrumentation } from './initialize';
|
|
3
3
|
export { setReactRouterV6SSRDependencies } from './routerDependencies';
|
|
4
|
-
export
|
|
4
|
+
export { withFaroRouterInstrumentation } from './withFaroRouterInstrumentation';
|
|
5
|
+
export type { ReactRouterV6CreateRoutesFromChildren, ReactRouterV6Dependencies, ReactRouterV6MatchRoutes, ReactRouterV6Params, ReactRouterV6RouteMatch, ReactRouterV6RouteObject, ReactRouterV6RoutesProps, ReactRouterV6RoutesShape, ReactRouterV6UseLocation, ReactRouterV6UseNavigationType, ReactRouterV6DataRouterDependencies, } from './types';
|
|
@@ -1,2 +1,3 @@
|
|
|
1
|
-
import type { ReactRouterV6Dependencies } from './types';
|
|
1
|
+
import type { ReactRouterV6DataRouterDependencies, ReactRouterV6Dependencies } from './types';
|
|
2
2
|
export declare function initializeReactRouterV6Instrumentation(dependencies: ReactRouterV6Dependencies): void;
|
|
3
|
+
export declare function initializeReactRouterV6DataRouterInstrumentation(dependencies: ReactRouterV6DataRouterDependencies): void;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ReactRouterV6CreateRoutesFromChildren, ReactRouterV6Dependencies, ReactRouterV6MatchRoutes, ReactRouterV6RoutesShape, ReactRouterV6UseLocation, ReactRouterV6UseNavigationType } from './types';
|
|
1
|
+
import type { ReactRouterV6CreateRoutesFromChildren, ReactRouterV6DataRouterDependencies, ReactRouterV6Dependencies, ReactRouterV6MatchRoutes, ReactRouterV6RoutesShape, ReactRouterV6UseLocation, ReactRouterV6UseNavigationType } from './types';
|
|
2
2
|
export declare let isInitialized: boolean;
|
|
3
3
|
export declare let createRoutesFromChildren: ReactRouterV6CreateRoutesFromChildren;
|
|
4
4
|
export declare let matchRoutes: ReactRouterV6MatchRoutes;
|
|
@@ -7,3 +7,4 @@ export declare let useLocation: ReactRouterV6UseLocation;
|
|
|
7
7
|
export declare let useNavigationType: ReactRouterV6UseNavigationType;
|
|
8
8
|
export declare function setReactRouterV6Dependencies(newDependencies: ReactRouterV6Dependencies): void;
|
|
9
9
|
export declare function setReactRouterV6SSRDependencies(newDependencies: Pick<ReactRouterV6Dependencies, 'Routes'>): void;
|
|
10
|
+
export declare function setReactRouterV6DataRouterDependencies(newDependencies: ReactRouterV6DataRouterDependencies): void;
|
|
@@ -43,6 +43,9 @@ export interface ReactRouterV6Dependencies {
|
|
|
43
43
|
useLocation: ReactRouterV6UseLocation;
|
|
44
44
|
useNavigationType: ReactRouterV6UseNavigationType;
|
|
45
45
|
}
|
|
46
|
+
export interface ReactRouterV6DataRouterDependencies {
|
|
47
|
+
matchRoutes: ReactRouterV6MatchRoutes;
|
|
48
|
+
}
|
|
46
49
|
export type EventRouteTransitionAttributes = {
|
|
47
50
|
fromRoute?: string;
|
|
48
51
|
fromUrl?: string;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { NavigationType, ReactRouterLocation } from '../types';
|
|
2
|
+
import type { ReactRouterV6RouteObject } from './types';
|
|
3
|
+
interface RouterState {
|
|
4
|
+
historyAction: NavigationType | any;
|
|
5
|
+
location: ReactRouterLocation;
|
|
6
|
+
}
|
|
7
|
+
interface Router {
|
|
8
|
+
state: RouterState;
|
|
9
|
+
routes: ReactRouterV6RouteObject[];
|
|
10
|
+
subscribe(fn: (state: RouterState) => void): () => void;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* To use with React Router 6.4 data APIs.
|
|
14
|
+
*/
|
|
15
|
+
export declare function withFaroRouterInstrumentation<R extends Router = Router>(router: R): R;
|
|
16
|
+
export {};
|
package/dist/types/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { ReactRouterV4V5Dependencies, ReactRouterV6Dependencies, ReactRouterVersion } from './router';
|
|
1
|
+
import type { ReactRouterV4V5Dependencies, ReactRouterV6DataRouterDependencies, ReactRouterV6Dependencies, ReactRouterVersion } from './router';
|
|
2
2
|
export interface ReactRouterV4V5Config {
|
|
3
3
|
version: ReactRouterVersion.V4 | ReactRouterVersion.V5;
|
|
4
4
|
dependencies: ReactRouterV4V5Dependencies;
|
|
@@ -7,6 +7,10 @@ export interface ReactRouterV6Config {
|
|
|
7
7
|
version: ReactRouterVersion.V6;
|
|
8
8
|
dependencies: ReactRouterV6Dependencies;
|
|
9
9
|
}
|
|
10
|
+
export interface ReactRouterV6DataRouterConfig {
|
|
11
|
+
version: ReactRouterVersion.V6_data_router;
|
|
12
|
+
dependencies: ReactRouterV6DataRouterDependencies;
|
|
13
|
+
}
|
|
10
14
|
export interface ReactIntegrationConfig {
|
|
11
|
-
router?: ReactRouterV4V5Config | ReactRouterV6Config;
|
|
15
|
+
router?: ReactRouterV4V5Config | ReactRouterV6Config | ReactRouterV6DataRouterConfig;
|
|
12
16
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grafana/faro-react",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Faro package that enables easier integration in projects built with React.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"observability",
|
|
@@ -52,8 +52,8 @@
|
|
|
52
52
|
"quality:circular-deps": "madge --circular ."
|
|
53
53
|
},
|
|
54
54
|
"dependencies": {
|
|
55
|
-
"@grafana/faro-web-sdk": "^1.
|
|
56
|
-
"@grafana/faro-web-tracing": "^1.
|
|
55
|
+
"@grafana/faro-web-sdk": "^1.5.0",
|
|
56
|
+
"@grafana/faro-web-tracing": "^1.5.0",
|
|
57
57
|
"hoist-non-react-statics": "^3.3.2"
|
|
58
58
|
},
|
|
59
59
|
"devDependencies": {
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"publishConfig": {
|
|
72
72
|
"access": "public"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "d986f24a192207f16a04dc63f366f2fe5c570d06"
|
|
75
75
|
}
|