From 66292bc0cfaca3e6bf354dd8790d4084bdccc567 Mon Sep 17 00:00:00 2001 From: Carlos Valente Date: Sat, 20 Jun 2026 09:02:17 +0200 Subject: [PATCH] chore: upgrade react packages --- apps/client/package.json | 6 +- .../common/utils/__tests__/urlPresets.test.ts | 24 +++ apps/client/src/sentry.config.ts | 2 +- package.json | 2 +- pnpm-lock.yaml | 191 +++++++++--------- 5 files changed, 124 insertions(+), 101 deletions(-) diff --git a/apps/client/package.json b/apps/client/package.json index 82490118e..d5f36ca2c 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -24,13 +24,13 @@ "axios": "^1.12.2", "csv-stringify": "^6.6.0", "qrcode": "^1.5.4", - "react": "^19.2.3", + "react": "^19.2.7", "react-colorful": "^5.6.1", - "react-dom": "^19.2.3", + "react-dom": "^19.2.7", "react-fast-compare": "^3.2.2", "react-hook-form": "^7.72.0", "react-icons": "5.5.0", - "react-router": "^7.11.0", + "react-router": "^8.0.1", "react-virtuoso": "^4.17.0", "zustand": "^5.0.9" }, diff --git a/apps/client/src/common/utils/__tests__/urlPresets.test.ts b/apps/client/src/common/utils/__tests__/urlPresets.test.ts index e46ba9e9a..21880b55f 100644 --- a/apps/client/src/common/utils/__tests__/urlPresets.test.ts +++ b/apps/client/src/common/utils/__tests__/urlPresets.test.ts @@ -40,6 +40,15 @@ describe('getRouteFromPreset()', () => { options: {}, }, ]; + const disabledPresets: URLPreset[] = [ + { + enabled: false, + alias: 'demopage', + target: OntimeView.Timer, + search: 'user=guest', + options: {}, + }, + ]; it('checks if the current location matches an enabled preset', () => { // we make the current location be the alias @@ -47,6 +56,16 @@ describe('getRouteFromPreset()', () => { expect(getRouteFromPreset(location, presets)).toStrictEqual('timer?user=guest&alias=demopage'); }); + it('checks if the current location matches an enabled preset target', () => { + const location = resolvePath('/timer'); + expect(getRouteFromPreset(location, presets)).toStrictEqual('timer?user=guest&alias=demopage'); + }); + + it('does not redirect disabled presets', () => { + const location = resolvePath('/demopage'); + expect(getRouteFromPreset(location, disabledPresets)).toBeNull(); + }); + it('returns null when already on a preset path', () => { const location = resolvePath('/preset/demopage'); expect(getRouteFromPreset(location, presets)).toBeNull(); @@ -86,6 +105,11 @@ describe('getRouteFromPreset()', () => { const location = resolvePath('/demopage?n=1&token=123'); expect(getRouteFromPreset(location, presets)).toBe('timer?user=guest&alias=demopage&n=1&token=123'); }); + + it('redirects stale unwrapped params back to the saved preset params while preserving feature params', () => { + const location = resolvePath('/timer?user=admin&alias=demopage&n=1&token=123'); + expect(getRouteFromPreset(location, presets)).toBe('timer?user=guest&alias=demopage&n=1&token=123'); + }); }); describe('cuesheet presets', () => { diff --git a/apps/client/src/sentry.config.ts b/apps/client/src/sentry.config.ts index a0372ad5b..5ffad5d8e 100644 --- a/apps/client/src/sentry.config.ts +++ b/apps/client/src/sentry.config.ts @@ -82,5 +82,5 @@ export const initializeSentry = () => { }, }); - return Sentry.withSentryReactRouterV6Routing(Routes); + return Sentry.withSentryReactRouterV7Routing(Routes); }; diff --git a/package.json b/package.json index 2b8ca69ff..02494739e 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,7 @@ "devEngines": { "runtime": { "name": "node", - "version": "22.22.2" + "version": "22.22.3" } } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8e3ec0331..481f2962d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -60,7 +60,7 @@ importers: dependencies: '@base-ui/react': specifier: 1.3.0 - version: 1.3.0(@types/react@19.1.12)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 1.3.0(@types/react@19.1.12)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@codemirror/commands': specifier: ^6.0.0 version: 6.10.3 @@ -75,34 +75,34 @@ importers: version: 6.40.0 '@dnd-kit/core': specifier: ^6.3.1 - version: 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@dnd-kit/sortable': specifier: ^10.0.0 - version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3) + version: 10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7) '@dnd-kit/utilities': specifier: ^3.2.2 - version: 3.2.2(react@19.2.3) + version: 3.2.2(react@19.2.7) '@fontsource/open-sans': specifier: ^5.2.6 version: 5.2.6 '@mantine/hooks': specifier: ^8.3.7 - version: 8.3.7(react@19.2.3) + version: 8.3.7(react@19.2.7) '@sentry/react': specifier: ^10.2.0 - version: 10.9.0(react@19.2.3) + version: 10.9.0(react@19.2.7) '@table-nav/react': specifier: ^0.0.7 version: 0.0.7(@table-nav/core@0.0.7) '@tanstack/react-query': specifier: ^5.85.9 - version: 5.85.9(react@19.2.3) + version: 5.85.9(react@19.2.7) '@tanstack/react-query-devtools': specifier: ^5.85.9 - version: 5.85.9(@tanstack/react-query@5.85.9(react@19.2.3))(react@19.2.3) + version: 5.85.9(@tanstack/react-query@5.85.9(react@19.2.7))(react@19.2.7) '@tanstack/react-table': specifier: ^8.21.3 - version: 8.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 8.21.3(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@uiw/codemirror-theme-vscode': specifier: ^4.25.9 version: 4.25.9(@codemirror/language@6.12.3)(@codemirror/state@6.6.0)(@codemirror/view@6.40.0) @@ -119,32 +119,32 @@ importers: specifier: ^1.5.4 version: 1.5.4 react: - specifier: ^19.2.3 - version: 19.2.3 + specifier: ^19.2.7 + version: 19.2.7 react-colorful: specifier: ^5.6.1 - version: 5.6.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 5.6.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react-dom: - specifier: ^19.2.3 - version: 19.2.3(react@19.2.3) + specifier: ^19.2.7 + version: 19.2.7(react@19.2.7) react-fast-compare: specifier: ^3.2.2 version: 3.2.2 react-hook-form: specifier: ^7.72.0 - version: 7.72.0(react@19.2.3) + version: 7.72.0(react@19.2.7) react-icons: specifier: 5.5.0 - version: 5.5.0(react@19.2.3) + version: 5.5.0(react@19.2.7) react-router: - specifier: ^7.11.0 - version: 7.11.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + specifier: ^8.0.1 + version: 8.0.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) react-virtuoso: specifier: ^4.17.0 - version: 4.17.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + version: 4.17.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7) zustand: specifier: ^5.0.9 - version: 5.0.9(@types/react@19.1.12)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)) + version: 5.0.9(@types/react@19.1.12)(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)) devDependencies: '@sentry/vite-plugin': specifier: 5.1.1 @@ -3012,6 +3012,9 @@ packages: convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + cookie-es@3.1.1: + resolution: {integrity: sha512-UaXxwISYJPTr9hwQxMFYZ7kNhSXboMXP+Z3TRX6f1/NyaGPfuNUZOWP1pUEb75B2HjfklIYLVRfWiFZJyC6Npg==} + cookie-parser@1.4.7: resolution: {integrity: sha512-nGUvgXnotP3BsjiLX2ypbQnWoGUPIIfHQNZkkC668ntrzGWEZVW70HDEB1qnNGMicPje6EttlIgzo51YSwNQGw==} engines: {node: '>= 0.8.0'} @@ -4210,10 +4213,10 @@ packages: react: '>=16.8.0' react-dom: '>=16.8.0' - react-dom@19.2.3: - resolution: {integrity: sha512-yELu4WmLPw5Mr/lmeEpox5rw3RETacE++JgHqQzd2dg+YbJuat3jH4ingc+WPZhxaoFzdv9y33G+F7Nl5O0GBg==} + react-dom@19.2.7: + resolution: {integrity: sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==} peerDependencies: - react: ^19.2.3 + react: ^19.2.7 react-fast-compare@3.2.2: resolution: {integrity: sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==} @@ -4236,12 +4239,12 @@ packages: resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} engines: {node: '>=0.10.0'} - react-router@7.11.0: - resolution: {integrity: sha512-uI4JkMmjbWCZc01WVP2cH7ZfSzH91JAZUDd7/nIprDgWxBV1TkkmLToFh7EbMTcMak8URFRa2YoBL/W8GWnCTQ==} - engines: {node: '>=20.0.0'} + react-router@8.0.1: + resolution: {integrity: sha512-5EL/fANovVUhRK50NLS8RYfX0BxrimoKsHWUPPy8v5UEl8i6vzF7e4POo3u+AhPItDwccUAJjMfIOmydxBJmQw==} + engines: {node: '>=22.22.0'} peerDependencies: - react: '>=18' - react-dom: '>=18' + react: '>=19.2.7' + react-dom: '>=19.2.7' peerDependenciesMeta: react-dom: optional: true @@ -4252,8 +4255,8 @@ packages: react: '>=16 || >=17 || >= 18 || >= 19' react-dom: '>=16 || >=17 || >= 18 || >=19' - react@19.2.3: - resolution: {integrity: sha512-Ku/hhYbVjOQnXDZFv2+RibmLFGwFdeeKHFcOTlrt7xplBnya5OGn/hIRDsqDiSUcfORsDC7MPxwork8jBwsIWA==} + react@19.2.7: + resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==} engines: {node: '>=0.10.0'} read-binary-file-arch@1.0.6: @@ -4435,9 +4438,6 @@ packages: set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} - set-cookie-parser@2.7.1: - resolution: {integrity: sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==} - setprototypeof@1.2.0: resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} @@ -5753,27 +5753,27 @@ snapshots: '@babel/helper-string-parser': 8.0.0-rc.3 '@babel/helper-validator-identifier': 8.0.0-rc.2 - '@base-ui/react@1.3.0(@types/react@19.1.12)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@base-ui/react@1.3.0(@types/react@19.1.12)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@babel/runtime': 7.29.2 - '@base-ui/utils': 0.2.6(@types/react@19.1.12)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@floating-ui/react-dom': 2.1.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + '@base-ui/utils': 0.2.6(@types/react@19.1.12)(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@floating-ui/react-dom': 2.1.8(react-dom@19.2.7(react@19.2.7))(react@19.2.7) '@floating-ui/utils': 0.2.11 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) tabbable: 6.4.0 - use-sync-external-store: 1.6.0(react@19.2.3) + use-sync-external-store: 1.6.0(react@19.2.7) optionalDependencies: '@types/react': 19.1.12 - '@base-ui/utils@0.2.6(@types/react@19.1.12)(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@base-ui/utils@0.2.6(@types/react@19.1.12)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@babel/runtime': 7.29.2 '@floating-ui/utils': 0.2.11 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) reselect: 5.1.1 - use-sync-external-store: 1.6.0(react@19.2.3) + use-sync-external-store: 1.6.0(react@19.2.7) optionalDependencies: '@types/react': 19.1.12 @@ -5824,29 +5824,29 @@ snapshots: ajv: 6.14.0 ajv-keywords: 3.5.2(ajv@6.14.0) - '@dnd-kit/accessibility@3.1.1(react@19.2.3)': + '@dnd-kit/accessibility@3.1.1(react@19.2.7)': dependencies: - react: 19.2.3 + react: 19.2.7 tslib: 2.6.2 - '@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@dnd-kit/core@6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: - '@dnd-kit/accessibility': 3.1.1(react@19.2.3) - '@dnd-kit/utilities': 3.2.2(react@19.2.3) - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + '@dnd-kit/accessibility': 3.1.1(react@19.2.7) + '@dnd-kit/utilities': 3.2.2(react@19.2.7) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) tslib: 2.6.2 - '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3))(react@19.2.3)': + '@dnd-kit/sortable@10.0.0(@dnd-kit/core@6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(react@19.2.7)': dependencies: - '@dnd-kit/core': 6.3.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3) - '@dnd-kit/utilities': 3.2.2(react@19.2.3) - react: 19.2.3 + '@dnd-kit/core': 6.3.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7) + '@dnd-kit/utilities': 3.2.2(react@19.2.7) + react: 19.2.7 tslib: 2.6.2 - '@dnd-kit/utilities@3.2.2(react@19.2.3)': + '@dnd-kit/utilities@3.2.2(react@19.2.7)': dependencies: - react: 19.2.3 + react: 19.2.7 tslib: 2.6.2 '@electron/asar@3.4.1': @@ -6195,11 +6195,11 @@ snapshots: '@floating-ui/core': 1.7.5 '@floating-ui/utils': 0.2.11 - '@floating-ui/react-dom@2.1.8(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@floating-ui/react-dom@2.1.8(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@floating-ui/dom': 1.7.6 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) '@floating-ui/utils@0.2.11': {} @@ -6277,9 +6277,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@mantine/hooks@8.3.7(react@19.2.3)': + '@mantine/hooks@8.3.7(react@19.2.7)': dependencies: - react: 19.2.3 + react: 19.2.7 '@marijn/find-cluster-break@1.0.2': {} @@ -6765,12 +6765,12 @@ snapshots: '@sentry/core@10.9.0': {} - '@sentry/react@10.9.0(react@19.2.3)': + '@sentry/react@10.9.0(react@19.2.7)': dependencies: '@sentry/browser': 10.9.0 '@sentry/core': 10.9.0 hoist-non-react-statics: 3.3.2 - react: 19.2.3 + react: 19.2.7 '@sentry/rollup-plugin@5.1.1(rollup@4.59.0)': dependencies: @@ -6886,22 +6886,22 @@ snapshots: '@tanstack/query-devtools@5.84.0': {} - '@tanstack/react-query-devtools@5.85.9(@tanstack/react-query@5.85.9(react@19.2.3))(react@19.2.3)': + '@tanstack/react-query-devtools@5.85.9(@tanstack/react-query@5.85.9(react@19.2.7))(react@19.2.7)': dependencies: '@tanstack/query-devtools': 5.84.0 - '@tanstack/react-query': 5.85.9(react@19.2.3) - react: 19.2.3 + '@tanstack/react-query': 5.85.9(react@19.2.7) + react: 19.2.7 - '@tanstack/react-query@5.85.9(react@19.2.3)': + '@tanstack/react-query@5.85.9(react@19.2.7)': dependencies: '@tanstack/query-core': 5.85.9 - react: 19.2.3 + react: 19.2.7 - '@tanstack/react-table@8.21.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3)': + '@tanstack/react-table@8.21.3(react-dom@19.2.7(react@19.2.7))(react@19.2.7)': dependencies: '@tanstack/table-core': 8.21.3 - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) '@tanstack/table-core@8.21.3': {} @@ -7539,6 +7539,8 @@ snapshots: convert-source-map@2.0.0: {} + cookie-es@3.1.1: {} + cookie-parser@1.4.7: dependencies: cookie: 0.7.2 @@ -8859,44 +8861,43 @@ snapshots: iconv-lite: 0.6.3 unpipe: 1.0.0 - react-colorful@5.6.1(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-colorful@5.6.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) - react-dom@19.2.3(react@19.2.3): + react-dom@19.2.7(react@19.2.7): dependencies: - react: 19.2.3 + react: 19.2.7 scheduler: 0.27.0 react-fast-compare@3.2.2: {} - react-hook-form@7.72.0(react@19.2.3): + react-hook-form@7.72.0(react@19.2.7): dependencies: - react: 19.2.3 + react: 19.2.7 - react-icons@5.5.0(react@19.2.3): + react-icons@5.5.0(react@19.2.7): dependencies: - react: 19.2.3 + react: 19.2.7 react-is@16.13.1: {} react-refresh@0.18.0: {} - react-router@7.11.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-router@8.0.1(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: - cookie: 1.0.2 - react: 19.2.3 - set-cookie-parser: 2.7.1 + cookie-es: 3.1.1 + react: 19.2.7 optionalDependencies: - react-dom: 19.2.3(react@19.2.3) + react-dom: 19.2.7(react@19.2.7) - react-virtuoso@4.17.0(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + react-virtuoso@4.17.0(react-dom@19.2.7(react@19.2.7))(react@19.2.7): dependencies: - react: 19.2.3 - react-dom: 19.2.3(react@19.2.3) + react: 19.2.7 + react-dom: 19.2.7(react@19.2.7) - react@19.2.3: {} + react@19.2.7: {} read-binary-file-arch@1.0.6: dependencies: @@ -9153,8 +9154,6 @@ snapshots: set-blocking@2.0.0: {} - set-cookie-parser@2.7.1: {} - setprototypeof@1.2.0: {} shebang-command@2.0.0: @@ -9454,9 +9453,9 @@ snapshots: url-template@2.0.8: {} - use-sync-external-store@1.6.0(react@19.2.3): + use-sync-external-store@1.6.0(react@19.2.7): dependencies: - react: 19.2.3 + react: 19.2.7 utf8-byte-length@1.0.4: {} @@ -9739,8 +9738,8 @@ snapshots: yocto-queue@0.1.0: {} - zustand@5.0.9(@types/react@19.1.12)(react@19.2.3)(use-sync-external-store@1.6.0(react@19.2.3)): + zustand@5.0.9(@types/react@19.1.12)(react@19.2.7)(use-sync-external-store@1.6.0(react@19.2.7)): optionalDependencies: '@types/react': 19.1.12 - react: 19.2.3 - use-sync-external-store: 1.6.0(react@19.2.3) + react: 19.2.7 + use-sync-external-store: 1.6.0(react@19.2.7)