Skip to content

Commit e74c3e1

Browse files
authored
πŸ› [RUM-REACT] Fix react V7 import and add E2E test (#3758)
* fix v7 * delete old reactRouterFile * transpilation to old browsers and license * factorize test * update factorization * clean up code, rename app
1 parent c8327cd commit e74c3e1

File tree

24 files changed

+271
-193
lines changed

24 files changed

+271
-193
lines changed

β€ŽLICENSE-3rdparty.csvβ€Ž

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,5 @@ dev,@types/webpack-env,MIT,Copyright Microsoft Corporation
7979
dev,react-refresh,MIT,Copyright (c) Facebook, Inc. and its affiliates.
8080
dev,react-refresh-typescript,MIT,Copyright (c) Piotr Monwid-Olechnowicz
8181
dev,webpack-dev-server,MIT,Copyright JS Foundation and other contributors
82-
dev,http-server,MIT,Copyright http-party contributors
82+
dev,http-server,MIT,Copyright http-party contributors
83+
dev,react-router,MIT,Copyright (c) React Training LLC 2015-2019 Copyright (c) Remix Software Inc. 2020-2021 Copyright (c) Shopify Inc. 2022-2023

β€Žpackages/rum-react/package.jsonβ€Ž

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
},
1919
"peerDependencies": {
2020
"react": "18 || 19",
21+
"react-router": "7",
2122
"react-router-dom": "6 || 7"
2223
},
2324
"peerDependenciesMeta": {
@@ -30,6 +31,9 @@
3031
"react": {
3132
"optional": true
3233
},
34+
"react-router": {
35+
"optional": true
36+
},
3337
"react-router-dom": {
3438
"optional": true
3539
}
@@ -39,6 +43,7 @@
3943
"@types/react-dom": "19.1.7",
4044
"react": "19.1.1",
4145
"react-dom": "19.1.1",
46+
"react-router": "7.7.1",
4247
"react-router-dom": "7.7.1",
4348
"react-router-dom-6": "npm:[email protected]"
4449
},
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"private": true,
3-
"main": "../cjs/entries/reactRouter.js",
4-
"module": "../esm/entries/reactRouter.js",
5-
"types": "../cjs/entries/reactRouter.d.ts"
3+
"main": "../cjs/entries/reactRouterV6.js",
4+
"module": "../esm/entries/reactRouterV6.js",
5+
"types": "../cjs/entries/reactRouterV6.d.ts"
66
}
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"private": true,
3-
"main": "../cjs/entries/reactRouter.js",
4-
"module": "../esm/entries/reactRouter.js",
5-
"types": "../cjs/entries/reactRouter.d.ts"
3+
"main": "../cjs/entries/reactRouterV7.js",
4+
"module": "../esm/entries/reactRouterV7.js",
5+
"types": "../cjs/entries/reactRouterV7.d.ts"
66
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/* eslint-disable local-rules/disallow-side-effects */
2+
3+
import {
4+
createBrowserRouter as originalCreateBrowserRouter,
5+
createHashRouter as originalCreateHashRouter,
6+
createMemoryRouter as originalCreateMemoryRouter,
7+
useRoutes as originalUseRoutes,
8+
useLocation,
9+
matchRoutes,
10+
createRoutesFromChildren,
11+
} from 'react-router'
12+
import { wrapCreateRouter, createRoutesComponent, wrapUseRoutes } from '../domain/reactRouter'
13+
14+
/** @function */
15+
export const createBrowserRouter = wrapCreateRouter(originalCreateBrowserRouter)
16+
17+
/** @function */
18+
export const createHashRouter = wrapCreateRouter(originalCreateHashRouter)
19+
20+
/** @function */
21+
export const createMemoryRouter = wrapCreateRouter(originalCreateMemoryRouter)
22+
23+
/** @function */
24+
export const useRoutes = wrapUseRoutes({
25+
useRoutes: originalUseRoutes,
26+
useLocation,
27+
matchRoutes,
28+
})
29+
30+
export type { AnyLocation } from '../domain/reactRouter'
31+
32+
/** @function */
33+
export const Routes = createRoutesComponent(useRoutes, createRoutesFromChildren)

β€Žscripts/build/build-test-apps.tsβ€Ž

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,8 @@ runMain(async () => {
2020
command`yarn lerna run pack`.run()
2121

2222
buildApp('test/apps/vanilla')
23-
buildApp('test/apps/react')
23+
buildApp('test/apps/react-router-v6-app')
24+
await buildReactRouterv7App()
2425
await buildExtensions()
2526

2627
printLog('Test apps and extensions built successfully.')
@@ -32,6 +33,34 @@ function buildApp(appPath: string) {
3233
command`yarn build`.withCurrentWorkingDirectory(appPath).run()
3334
}
3435

36+
async function buildReactRouterv7App() {
37+
const baseAppPath = 'test/apps/react-router-v6-app'
38+
const appPath = 'test/apps/react-router-v7-app'
39+
40+
fs.rmSync(appPath, { recursive: true, force: true })
41+
fs.cpSync(baseAppPath, appPath, { recursive: true })
42+
43+
await modifyFile(path.join(appPath, 'package.json'), (content: string) =>
44+
content
45+
.replace(/"name": "react-router-v6-app"/, '"name": "react-router-v7-app"')
46+
.replace(/"react-router-dom": "[^"]*"/, '"react-router": "7.0.2"')
47+
)
48+
49+
await modifyFile(path.join(appPath, 'app.tsx'), (content: string) =>
50+
content
51+
.replace('@datadog/browser-rum-react/react-router-v6', '@datadog/browser-rum-react/react-router-v7')
52+
.replace("from 'react-router-dom'", "from 'react-router'")
53+
)
54+
55+
await modifyFile(path.join(appPath, 'webpack.config.js'), (content: string) =>
56+
content
57+
.replace('react-router-v6-app.js', 'react-router-v7-app.js')
58+
.replace('react-router-v6-app.js', 'react-router-v7-app.js')
59+
)
60+
61+
buildApp(appPath)
62+
}
63+
3564
async function buildExtensions(): Promise<void> {
3665
const baseExtDir = 'test/apps/base-extension'
3766

β€Žtest/apps/.gitignoreβ€Ž

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
allowed-tracking-origin/
22
invalid-tracking-origin/
3+
react-router-v7-app/

β€Žtest/apps/base-extension/yarn.lockβ€Ž

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ __metadata:
77

88
"@datadog/browser-core@file:../../../packages/core/package.tgz::locator=rum-testing-extension%40workspace%3A.":
99
version: 6.17.0
10-
resolution: "@datadog/browser-core@file:../../../packages/core/package.tgz#../../../packages/core/package.tgz::hash=fc50b5&locator=rum-testing-extension%40workspace%3A."
11-
checksum: 10c0/75c09a1051f4a6edad5bdf1f6000dc1205e7ee1b9e982cd854fe31c67b51c13952f0e98d70e49f1ac72ff138ce51d4ef9363622c40cfd3deb96b29366cd7a00b
10+
resolution: "@datadog/browser-core@file:../../../packages/core/package.tgz#../../../packages/core/package.tgz::hash=273ff8&locator=rum-testing-extension%40workspace%3A."
11+
checksum: 10c0/9319a172551160b06b9fb22ffcd5fabb5b4bc4b3a2f614ac997eb9d8be0ae2e7baca9dee116c87e4ed3b569cb6eaf498e1b0ebf406e8278e32f1d2259318029e
1212
languageName: node
1313
linkType: hard
1414

@@ -28,16 +28,16 @@ __metadata:
2828

2929
"@datadog/browser-rum-core@file:../../../packages/rum-core/package.tgz::locator=rum-testing-extension%40workspace%3A.":
3030
version: 6.17.0
31-
resolution: "@datadog/browser-rum-core@file:../../../packages/rum-core/package.tgz#../../../packages/rum-core/package.tgz::hash=95bbed&locator=rum-testing-extension%40workspace%3A."
31+
resolution: "@datadog/browser-rum-core@file:../../../packages/rum-core/package.tgz#../../../packages/rum-core/package.tgz::hash=197d37&locator=rum-testing-extension%40workspace%3A."
3232
dependencies:
3333
"@datadog/browser-core": "npm:6.17.0"
34-
checksum: 10c0/fff438d681c2358e2b3da90f09a146eb0c13e625a33c24e48b47efd60042a48cfaae77238657e7a8e741be286fe356c9370ba05b06415f326608b2a22b2733ab
34+
checksum: 10c0/92758a454e4a4e2b643ed85a97d985ba08c4908f4a07ef42fae7f77d2a5b6592a28b012f97f1a5385bee624989d920d72dcc3f0ce7dd8c28281da73c3f23ff3b
3535
languageName: node
3636
linkType: hard
3737

3838
"@datadog/browser-rum@file:../../../packages/rum/package.tgz::locator=rum-testing-extension%40workspace%3A.":
3939
version: 6.17.0
40-
resolution: "@datadog/browser-rum@file:../../../packages/rum/package.tgz#../../../packages/rum/package.tgz::hash=c06dd9&locator=rum-testing-extension%40workspace%3A."
40+
resolution: "@datadog/browser-rum@file:../../../packages/rum/package.tgz#../../../packages/rum/package.tgz::hash=483bca&locator=rum-testing-extension%40workspace%3A."
4141
dependencies:
4242
"@datadog/browser-core": "npm:6.17.0"
4343
"@datadog/browser-rum-core": "npm:6.17.0"
@@ -46,7 +46,7 @@ __metadata:
4646
peerDependenciesMeta:
4747
"@datadog/browser-logs":
4848
optional: true
49-
checksum: 10c0/51f05507e26f5bcc1cfd58c8375333157c40601bf8e12626a370e8fc98696dbbd3f164721d0cb9039617457b57ea57d019dd3626a4a4c2908ce083cf6ce004df
49+
checksum: 10c0/508258fb9c1cb2d10cbd2f165cd9346d20e3c6e7018294cf2654ba4ffa4adcef77c4e6c5914b3788e21b27062b8f57ed18a36bf55ae75c2b90290ab65c6e4bdc
5050
languageName: node
5151
linkType: hard
5252

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
dist
22
node_modules
3-
.yarn/*
3+
.yarn/*

0 commit comments

Comments
Β (0)