From d5ff9bd2bb787cc5978b71c1b81581e0b7018c41 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 06:28:30 +0000 Subject: [PATCH 1/3] feat: upgrade next-navigation-guard to 0.2.0 and add compatibility tests Co-authored-by: stalniy <1159966+stalniy@users.noreply.github.com> --- apps/deploy-web/package.json | 2 +- .../NavigationGuardProvider.spec.tsx | 110 +++++++++ package-lock.json | 211 ++++++++---------- 3 files changed, 201 insertions(+), 122 deletions(-) create mode 100644 apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx diff --git a/apps/deploy-web/package.json b/apps/deploy-web/package.json index e1feba52a0..8bffc0396a 100644 --- a/apps/deploy-web/package.json +++ b/apps/deploy-web/package.json @@ -96,7 +96,7 @@ "murmurhash": "^2.0.1", "nanoid": "^3.3.4", "next": "^14.2.35", - "next-navigation-guard": "^0.1.2", + "next-navigation-guard": "^0.2.0", "next-nprogress-bar": "^2.1.2", "next-pwa": "^5.6.0", "next-qrcode": "^2.1.0", diff --git a/apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx b/apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx new file mode 100644 index 0000000000..ecd7789e51 --- /dev/null +++ b/apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx @@ -0,0 +1,110 @@ +import { act, render, screen } from "@testing-library/react"; +import { NavigationGuardProvider } from "next-navigation-guard"; + +describe("NavigationGuardProvider compatibility", () => { + // Store original crypto object + const originalCrypto = global.crypto; + + beforeEach(() => { + // Reset history state before each test + if (typeof window !== "undefined" && window.history) { + window.history.replaceState({}, "", "/"); + } + }); + + afterEach(() => { + // Restore original crypto + global.crypto = originalCrypto; + }); + + it("should work without crypto.randomUUID (Android 10 compatibility)", () => { + // Simulate older browser without crypto.randomUUID + const cryptoWithoutRandomUUID = { + ...global.crypto, + randomUUID: undefined + } as any; + global.crypto = cryptoWithoutRandomUUID; + + // Should not throw an error when rendering + expect(() => { + render( + +
Test Content
+
+ ); + }).not.toThrow(); + + expect(screen.getByText("Test Content")).toBeInTheDocument(); + }); + + it("should render children successfully", () => { + render( + +
Navigation Guard Works
+
+ ); + + expect(screen.getByTestId("child-content")).toBeInTheDocument(); + expect(screen.getByText("Navigation Guard Works")).toBeInTheDocument(); + }); + + it("should work when crypto object is completely missing", () => { + // Simulate very old browser without crypto at all + delete (global as any).crypto; + + expect(() => { + render( + +
Test Content Without Crypto
+
+ ); + }).not.toThrow(); + + expect(screen.getByText("Test Content Without Crypto")).toBeInTheDocument(); + }); + + it("should handle multiple provider instances", () => { + render( + <> + +
Provider 1
+
+ +
Provider 2
+
+ + ); + + expect(screen.getByTestId("provider-1")).toBeInTheDocument(); + expect(screen.getByTestId("provider-2")).toBeInTheDocument(); + }); + + it("should work in simulated old browser environment (no crypto.randomUUID)", () => { + // Create a minimal crypto object without randomUUID (like Android 10) + const oldBrowserCrypto = { + getRandomValues: (arr: any) => { + for (let i = 0; i < arr.length; i++) { + arr[i] = Math.floor(Math.random() * 256); + } + return arr; + }, + subtle: {} as SubtleCrypto + } as Crypto; + + global.crypto = oldBrowserCrypto; + + let error: Error | null = null; + try { + render( + +
Old Browser Compatible
+
+ ); + } catch (e) { + error = e as Error; + } + + expect(error).toBeNull(); + expect(screen.getByTestId("old-browser-test")).toBeInTheDocument(); + }); +}); diff --git a/package-lock.json b/package-lock.json index 7f6fc3675a..1f508d14a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -395,7 +395,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.0.tgz", "integrity": "sha512-SLX36allrcnVaPYG3R78F/UZZsBsvbc7lMCLx37LyH5MJ1KAAZ2E3mW9OAD3zGz0G8q/BtoS5VUrjzDydhD6LQ==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -1098,7 +1097,7 @@ "murmurhash": "^2.0.1", "nanoid": "^3.3.4", "next": "^14.2.35", - "next-navigation-guard": "^0.1.2", + "next-navigation-guard": "^0.2.0", "next-nprogress-bar": "^2.1.2", "next-pwa": "^5.6.0", "next-qrcode": "^2.1.0", @@ -2666,7 +2665,6 @@ "resolved": "https://registry.npmjs.org/@stripe/stripe-js/-/stripe-js-8.3.0.tgz", "integrity": "sha512-hmC3u0anySPI+As+wFGrKG38pXnXAUqyiitnYeYknEOslcDM96AkBdMNxKYOopecuP/v1HMbclUEq8/DKKn+6w==", "license": "MIT", - "peer": true, "engines": { "node": ">=12.16" } @@ -6922,7 +6920,6 @@ "resolved": "https://registry.npmjs.org/@connectrpc/connect/-/connect-2.1.1.tgz", "integrity": "sha512-JzhkaTvM73m2K1URT6tv53k2RwngSmCXLZJgK580qNQOXRzZRR/BCMfZw3h+90JpnG6XksP5bYT+cz0rpUzUWQ==", "license": "Apache-2.0", - "peer": true, "peerDependencies": { "@bufbuild/protobuf": "^2.7.0" } @@ -7499,7 +7496,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.0.1.tgz", "integrity": "sha512-MaZk9SJIDgo1peKevlbhP6+IwIiNPNmswNL4AF0WaQJLbHXjr9SrZMgS12+iqr9ToV4ZVosCcc0f8Rg67LXjxw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, @@ -8987,7 +8983,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -10472,7 +10467,6 @@ "node_modules/@babel/preset-env": { "version": "7.24.7", "license": "MIT", - "peer": true, "dependencies": { "@babel/compat-data": "^7.24.7", "@babel/helper-compilation-targets": "^7.24.7", @@ -10775,15 +10769,13 @@ "resolved": "https://registry.npmjs.org/@biomejs/wasm-nodejs/-/wasm-nodejs-1.9.4.tgz", "integrity": "sha512-ZqNlhKcZW6MW1LxWIOfh9YVrBykvzyFad3bOh6JJFraDnNa3NXboRDiaI8dmrbb0ZHXCU1Tsq6WQsKV2Vpp5dw==", "dev": true, - "license": "MIT OR Apache-2.0", - "peer": true + "license": "MIT OR Apache-2.0" }, "node_modules/@bufbuild/protobuf": { "version": "2.9.0", "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.9.0.tgz", "integrity": "sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==", - "license": "(Apache-2.0 AND BSD-3-Clause)", - "peer": true + "license": "(Apache-2.0 AND BSD-3-Clause)" }, "node_modules/@casl/ability": { "version": "6.7.2", @@ -11061,7 +11053,6 @@ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", "dev": true, - "peer": true, "dependencies": { "env-paths": "^2.2.1", "import-fresh": "^3.3.0", @@ -11322,7 +11313,6 @@ "resolved": "https://registry.npmjs.org/@connectrpc/connect/-/connect-2.1.0.tgz", "integrity": "sha512-xhiwnYlJNHzmFsRw+iSPIwXR/xweTvTw8x5HiwWp10sbVtd4OpOXbRgE7V58xs1EC17fzusF1f5uOAy24OkBuA==", "license": "Apache-2.0", - "peer": true, "peerDependencies": { "@bufbuild/protobuf": "^2.7.0" } @@ -11345,7 +11335,6 @@ "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.32.4.tgz", "integrity": "sha512-zKYOt6hPy8obIFtLie/xtygCkH9ZROiQ12UHfKsOkWaZfPQUvVbtgmu6R4Kn1tFLI/SRkw7eqhaogmW/3NYu/Q==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@cosmjs/crypto": "^0.32.4", "@cosmjs/encoding": "^0.32.4", @@ -11560,7 +11549,6 @@ "resolved": "https://registry.npmjs.org/@cosmjs/proto-signing/-/proto-signing-0.32.4.tgz", "integrity": "sha512-QdyQDbezvdRI4xxSlyM1rSVBO2st5sqtbEIl3IX03uJ7YiZIQHyv6vaHVf1V4mapusCqguiHJzm4N4gsFdLBbQ==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@cosmjs/amino": "^0.32.4", "@cosmjs/crypto": "^0.32.4", @@ -12309,7 +12297,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -12332,7 +12319,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -12431,7 +12417,6 @@ "node_modules/@dotenvx/dotenvx/node_modules/picomatch": { "version": "4.0.2", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -12548,7 +12533,6 @@ "node_modules/@emotion/is-prop-valid": { "version": "1.2.2", "license": "MIT", - "peer": true, "dependencies": { "@emotion/memoize": "^0.8.1" } @@ -12562,7 +12546,6 @@ "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.4.tgz", "integrity": "sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", @@ -12601,7 +12584,6 @@ "version": "11.11.0", "resolved": "https://registry.npmjs.org/@emotion/server/-/server-11.11.0.tgz", "integrity": "sha512-6q89fj2z8VBTx9w93kJ5n51hsmtYuFPtZgnc1L8VzRx9ti4EU6EyvF6Nn1H1x3vcCQCF7u2dB2lY4AYJwUW4PA==", - "peer": true, "dependencies": { "@emotion/utils": "^1.2.1", "html-tokenize": "^2.0.0", @@ -12626,7 +12608,6 @@ "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.5.tgz", "integrity": "sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", @@ -13668,7 +13649,6 @@ "url": "https://opencollective.com/fakerjs" } ], - "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0", "npm": ">=6.14.13" @@ -13831,7 +13811,6 @@ "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.10.11.tgz", "integrity": "sha512-3RaoxOqkHHN2c05bwtBNVJmOf/UwMam0rZYtdl7dsRpsvDwcNpv6LkGgzltQ7xVf822LzBoKEPRvf4D7+xeIDw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@grpc/proto-loader": "^0.7.13", "@js-sdsl/ordered-map": "^4.4.2" @@ -14373,7 +14352,6 @@ "version": "1.23.31", "resolved": "https://registry.npmjs.org/@interchain-ui/react/-/react-1.23.31.tgz", "integrity": "sha512-7vyp0PaWr0VJzcC26D71Fr9OgOQLG5amV8zSV0XQSmBg3fRIwDSs4Mtn5ThASA2/2yWY3kqtZsNYNIMCQ8xjYg==", - "peer": true, "dependencies": { "@floating-ui/core": "^1.6.4", "@floating-ui/dom": "^1.6.7", @@ -15073,7 +15051,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -15302,7 +15279,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -16203,7 +16179,6 @@ "node_modules/@mui/material": { "version": "5.15.20", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.23.9", "@mui/base": "5.0.0-beta.40", @@ -16995,7 +16970,6 @@ "resolved": "https://registry.npmjs.org/@nestjs/common/-/common-11.1.3.tgz", "integrity": "sha512-ogEK+GriWodIwCw6buQ1rpcH4Kx+G7YQ9EwuPySI3rS05pSdtQ++UhucjusSI9apNidv+QURBztJkRecwwJQXg==", "license": "MIT", - "peer": true, "dependencies": { "file-type": "21.0.0", "iterare": "1.2.1", @@ -17100,7 +17074,6 @@ "resolved": "https://registry.npmjs.org/@nestjs/core/-/core-11.0.11.tgz", "integrity": "sha512-jMH3jrjrPiaGrkQ5hANNcgDWN+j+hcM5GMQ3jSs4vOWNs3lmKHTVR11wJ9y5tTNnwKydzMogeju0VTUdfXDI5Q==", "hasInstallScript": true, - "peer": true, "dependencies": { "@nuxt/opencollective": "0.4.1", "fast-safe-stringify": "2.1.1", @@ -17168,7 +17141,6 @@ "version": "11.0.11", "resolved": "https://registry.npmjs.org/@nestjs/platform-express/-/platform-express-11.0.11.tgz", "integrity": "sha512-iv6nH66i/RuRQufg5UUboQ4jQX4NuuePrYQpHB3ueiEIhJm2yLhhNYM6Y2l/76y9woW2eckbiqbzmW/JajAgeQ==", - "peer": true, "dependencies": { "cors": "2.8.5", "express": "5.0.1", @@ -18323,7 +18295,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "peer": true, "dependencies": { "@octokit/auth-token": "^2.4.4", "@octokit/graphql": "^4.5.8", @@ -18520,7 +18491,6 @@ "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=16" } @@ -18766,7 +18736,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -18788,7 +18757,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=14" }, @@ -18801,7 +18769,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/semantic-conventions": "1.28.0" }, @@ -19523,7 +19490,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@types/shimmer": "^1.2.0", @@ -21448,7 +21414,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/semantic-conventions": "1.28.0" @@ -21665,7 +21630,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/core": "1.30.1", "@opentelemetry/resources": "1.30.1", @@ -21769,7 +21733,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz", "integrity": "sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=14" } @@ -25501,7 +25464,6 @@ "integrity": "sha512-3arRdUp1fNx55itnjKiUhO6t4Mf91TsrTIYINDNLAZPS0TPd5YpiXRctwjel0qqWoOOhjA34cZ3m4dksLDFUYg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@redocly/ajv": "^8.11.2", "@redocly/config": "^0.22.0", @@ -25672,7 +25634,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -26110,6 +26071,7 @@ "resolved": "https://registry.npmjs.org/@scure/starknet/-/starknet-1.1.0.tgz", "integrity": "sha512-83g3M6Ix2qRsPN4wqLDqiRZ2GBNbjVWfboJE/9UjfG+MHr6oDSu/CWgy8hsBSJejr09DkkL+l0Ze4KVrlCIdtQ==", "license": "MIT", + "peer": true, "dependencies": { "@noble/curves": "~1.7.0", "@noble/hashes": "~1.6.0" @@ -26123,6 +26085,7 @@ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", "license": "MIT", + "peer": true, "dependencies": { "@noble/hashes": "1.6.0" }, @@ -26138,6 +26101,7 @@ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", "license": "MIT", + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -26150,6 +26114,7 @@ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.1.tgz", "integrity": "sha512-pq5D8h10hHBjyqX+cfBm0i8JUXJ0UhczFc4r74zbuT9XgewFo2E3J1cOaGtdZynILNmQ685YWGzGE1Zv6io50w==", "license": "MIT", + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -27089,14 +27054,16 @@ "version": "0.7.10", "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.7.10.tgz", "integrity": "sha512-1VtCqX4AHWJlRRSYGSn+4X1mqolI1Tdq62IwzoU2vUuEE72S1OlEeGhpvd6XsdqXcfHmVzYfj8k1XtKBQqwo9w==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@starknet-io/starknet-types-08": { "name": "@starknet-io/types-js", "version": "0.8.4", "resolved": "https://registry.npmjs.org/@starknet-io/types-js/-/types-js-0.8.4.tgz", "integrity": "sha512-0RZ3TZHcLsUTQaq1JhDSCM8chnzO4/XNsSCozwDET64JK5bjFDIf2ZUkta+tl5Nlbf4usoU7uZiDI/Q57kt2SQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@streamparser/json": { "version": "0.0.20", @@ -27135,7 +27102,6 @@ "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.6.0.tgz", "integrity": "sha512-Q5FsI3Cw0fGMXhmsg7c08i4EmXCrcl+WnAxb6LYOLHw4JFFC3yzmx9LaXZ7QMbA+JZXbigU2TirI7RAfO0Qlnw==", "dev": true, - "peer": true, "dependencies": { "@swc/counter": "^0.1.3", "@xhmikosr/bin-wrapper": "^13.0.5", @@ -27189,7 +27155,6 @@ "integrity": "sha512-Si27CiYwqJSF3K0HgxugQnjHNfH7YqqD89V+fLpyRHr81uTmCQpF0bnVdRMQ2SGAkCFJACYETRiBSrZOQ660+Q==", "devOptional": true, "hasInstallScript": true, - "peer": true, "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.19" @@ -27233,6 +27198,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } @@ -27248,6 +27214,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=10" } @@ -27263,6 +27230,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -27278,6 +27246,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -27293,6 +27262,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -27308,6 +27278,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -27323,6 +27294,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=10" } @@ -27338,6 +27310,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -27353,6 +27326,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -27368,6 +27342,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=10" } @@ -27425,7 +27400,6 @@ "version": "5.67.2", "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.67.2.tgz", "integrity": "sha512-+iaFJ/pt8TaApCk6LuZ0WHS/ECVfTzrxDOEL9HH9Dayyb5OVuomLzDXeSaI2GlGT/8HN7bDGiRXDts3LV+u6ww==", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" @@ -27435,7 +27409,6 @@ "version": "5.67.2", "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.67.2.tgz", "integrity": "sha512-6Sa+BVNJWhAV4QHvIqM73norNeGRWGC3ftN0Ix87cmMvI215I1wyJ44KUTt/9a0V9YimfGcg25AITaYVel71Og==", - "peer": true, "dependencies": { "@tanstack/query-core": "5.67.2" }, @@ -27511,7 +27484,6 @@ "integrity": "sha512-pemlzrSESWbdAloYml3bAJMEfNh1Z7EduzqPKprCH5S341frlpYnUEW0H72dLxa6IsYr+mPno20GiSm+h9dEdQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -27787,7 +27759,6 @@ "version": "7.20.5", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -28390,7 +28361,6 @@ "node_modules/@types/react": { "version": "18.2.0", "license": "MIT", - "peer": true, "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -28400,7 +28370,6 @@ "node_modules/@types/react-dom": { "version": "18.2.0", "license": "MIT", - "peer": true, "dependencies": { "@types/react": "*" } @@ -28588,8 +28557,7 @@ }, "node_modules/@types/validator": { "version": "13.11.10", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@types/webpack-node-externals": { "version": "3.0.4", @@ -29208,7 +29176,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/@vanilla-extract/css/-/css-1.17.1.tgz", "integrity": "sha512-tOHQXHm10FrJeXKFeWE09JfDGN/tvV6mbjwoNB9k03u930Vg021vTnbrCwVLkECj9Zvh/SHLBHJ4r2flGqfovw==", - "peer": true, "dependencies": { "@emotion/hash": "^0.9.0", "@vanilla-extract/private": "^1.0.6", @@ -29233,7 +29200,6 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/@vanilla-extract/dynamic/-/dynamic-2.1.2.tgz", "integrity": "sha512-9BGMciD8rO1hdSPIAh1ntsG4LPD3IYKhywR7VOmmz9OO4Lx1hlwkSg3E6X07ujFx7YuBfx0GDQnApG9ESHvB2A==", - "peer": true, "dependencies": { "@vanilla-extract/private": "^1.0.6" } @@ -29759,7 +29725,6 @@ "version": "2.11.0", "resolved": "https://registry.npmjs.org/@walletconnect/types/-/types-2.11.0.tgz", "integrity": "sha512-AB5b1lrEbCGHxqS2vqfCkIoODieH+ZAUp9rA1O2ftrhnqDJiJK983Df87JhYhECsQUBHHfALphA8ydER0q+9sw==", - "peer": true, "dependencies": { "@walletconnect/events": "^1.0.1", "@walletconnect/heartbeat": "1.2.1", @@ -30405,6 +30370,7 @@ "resolved": "https://registry.npmjs.org/abi-wan-kanabi/-/abi-wan-kanabi-2.2.4.tgz", "integrity": "sha512-0aA81FScmJCPX+8UvkXLki3X1+yPQuWxEkqXBVKltgPAK79J+NB+Lp5DouMXa7L6f+zcRlIA/6XO7BN/q9fnvg==", "license": "ISC", + "peer": true, "dependencies": { "ansicolors": "^0.3.2", "cardinal": "^2.1.1", @@ -30420,6 +30386,7 @@ "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "license": "MIT", + "peer": true, "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -30495,7 +30462,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -30591,7 +30557,6 @@ "node_modules/ajv": { "version": "6.12.6", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -30743,7 +30708,6 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, - "peer": true, "engines": { "node": ">=6" } @@ -30786,7 +30750,8 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/ansis": { "version": "3.16.0", @@ -31283,7 +31248,6 @@ "version": "1.8.3", "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.3.tgz", "integrity": "sha512-iP4DebzoNlP/YN2dpwCgb8zoCmhtkajzS48JvwmkSkXvPI3DHc7m+XYL5tGnSlJtR6nImXZmdCuN5aP8dh1d8A==", - "peer": true, "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -31324,7 +31288,6 @@ "version": "29.7.0", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", @@ -32113,7 +32076,6 @@ "url": "https://github.com/sponsors/ai" } ], - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001688", "electron-to-chromium": "^1.5.73", @@ -32534,7 +32496,6 @@ "node_modules/camelcase": { "version": "5.3.1", "license": "MIT", - "peer": true, "engines": { "node": ">=6" } @@ -32570,6 +32531,7 @@ "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", "license": "MIT", + "peer": true, "dependencies": { "ansicolors": "~0.3.2", "redeyed": "~2.1.0" @@ -33279,7 +33241,6 @@ "version": "12.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "peer": true, "engines": { "node": ">=18" } @@ -33840,8 +33801,7 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.9.0.tgz", "integrity": "sha512-MN/yUe6mkJwHnCFfsNPeCfXVhyxHYW6c/xDUzrSbBycYzw++XvWDMJArXp2pLdgD6FQ8DW79vkPjeNKVrXaHeQ==", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/create-hash": { "version": "1.2.0", @@ -34110,8 +34070,7 @@ }, "node_modules/csstype": { "version": "3.1.3", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/csv-stringify": { "version": "6.6.0", @@ -34254,8 +34213,7 @@ "node_modules/d3-selection": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-2.0.0.tgz", - "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==", - "peer": true + "integrity": "sha512-XoGGqhLUN/W14NmaqcO/bb1nqjDAw5WtSYb2X8wiuQWvSZUsUVYsOSkOybUrNvcBjaywBdYPy03eXHMXjk9nZA==" }, "node_modules/d3-shape": { "version": "3.2.0", @@ -34468,7 +34426,6 @@ "node_modules/date-fns": { "version": "2.30.0", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.21.0" }, @@ -35264,7 +35221,6 @@ "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-0.31.2.tgz", "integrity": "sha512-QnenevbnnAzmbNzQwbhklvIYrDE8YER8K7kSrAWQSV1YvFCdSQPzj+jzqRdTSsV2cDqSpQ0NXGyL1G9I43LDLg==", "license": "Apache-2.0", - "peer": true, "peerDependencies": { "@aws-sdk/client-rds-data": ">=3", "@cloudflare/workers-types": ">=3", @@ -35898,7 +35854,6 @@ "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz", "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -36175,7 +36130,6 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.8", @@ -36209,7 +36163,6 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-import-x/-/eslint-plugin-import-x-4.10.0.tgz", "integrity": "sha512-5ej+0WILhX3D6wkcdsyYmPp10SUIK6fmuZ6KS8nf9MD8CJ6/S/3Dl7m21g+MLeaTMsvcEXo3JunNAbgHwXxs/g==", "license": "MIT", - "peer": true, "dependencies": { "@pkgr/core": "^0.2.0", "@types/doctrine": "^0.0.9", @@ -37995,7 +37948,6 @@ "resolved": "https://registry.npmjs.org/gel/-/gel-2.0.2.tgz", "integrity": "sha512-XTKpfNR9HZOw+k0Bl04nETZjuP5pypVAXsZADSdwr3EtyygTTe1RqvftU2FjGu7Tp9e576a9b/iIOxWrRBxMiQ==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@petamoriken/float16": "^3.8.7", "debug": "^4.3.4", @@ -38292,6 +38244,34 @@ } } }, + "node_modules/git-semver-tags/node_modules/conventional-commits-filter": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", + "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", + "license": "MIT", + "optional": true, + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/git-semver-tags/node_modules/conventional-commits-parser": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.2.1.tgz", + "integrity": "sha512-20pyHgnO40rvfI0NGF/xiEoFMkXDtkF8FwHvk5BokoFoCuTQRI8vrNCNFWUOfuolKJMm1tPCHc8GgYEtr1XRNA==", + "license": "MIT", + "optional": true, + "peer": true, + "dependencies": { + "meow": "^13.0.0" + }, + "bin": { + "conventional-commits-parser": "dist/cli/index.js" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/git-semver-tags/node_modules/meow": { "version": "13.2.0", "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", @@ -39099,7 +39079,6 @@ "resolved": "https://registry.npmjs.org/hono/-/hono-4.6.12.tgz", "integrity": "sha512-eHtf4kSDNw6VVrdbd5IQi16r22m3s7mWPLd7xOMhg1a/Yyb1A0qpUFq8xYMX4FMuDe1nTKeMX5rTx7Nmw+a+Ag==", "license": "MIT", - "peer": true, "engines": { "node": ">=16.9.0" } @@ -39475,7 +39454,6 @@ "version": "10.1.1", "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -40691,7 +40669,6 @@ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -41704,7 +41681,6 @@ "integrity": "sha512-SYhBvTh89tTfCD/CRdSOm13mOBa42iTaTyfyEWBdKcGdPxPtLFBXuHR8XHb33YNYaP+lLbmSvBTsnoesCNJEsQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "abab": "^2.0.6", "acorn": "^8.8.1", @@ -41807,7 +41783,6 @@ "resolved": "https://registry.npmjs.org/jsep/-/jsep-1.4.0.tgz", "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "license": "MIT", - "peer": true, "engines": { "node": ">= 10.16.0" } @@ -43069,7 +43044,8 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/lossless-json/-/lossless-json-4.3.0.tgz", "integrity": "sha512-ToxOC+SsduRmdSuoLZLYAr5zy1Qu7l5XhmPWM3zefCZ5IcrzW/h108qbJUKfOlDlhvhjUK84+8PSVX0kxnit0g==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lowercase-keys": { "version": "3.0.0", @@ -45632,8 +45608,7 @@ "node_modules/monaco-editor": { "version": "0.52.2", "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", - "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", - "peer": true + "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==" }, "node_modules/moo": { "version": "0.5.2", @@ -45941,7 +45916,6 @@ "resolved": "https://registry.npmjs.org/next/-/next-14.2.35.tgz", "integrity": "sha512-KhYd2Hjt/O1/1aZVX3dCwGXM1QmOV4eNM2UTacK5gipDdPN/oHHK/4oVGy7X8GMfPMsUTUEmGlsy0EY1YGAkig==", "license": "MIT", - "peer": true, "dependencies": { "@next/env": "14.2.35", "@swc/helpers": "0.5.5", @@ -45988,13 +45962,13 @@ } }, "node_modules/next-navigation-guard": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/next-navigation-guard/-/next-navigation-guard-0.1.2.tgz", - "integrity": "sha512-gh+hUMqnI9a/iQ3sxCd7aagQB0NTioe7kj7UJagVfWh+GWfyr4mErlBy2yNZk0VyXebtW86I3cP6lcwraIFhYA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/next-navigation-guard/-/next-navigation-guard-0.2.0.tgz", + "integrity": "sha512-EnQcqJi/bcHXnirnY0TGSFkQ3Rl9ID4BZWdU2ovoWAkA72mCofI2hTcaqUUOmlSBVZp4AvSGm1kQmkOJDLrEjg==", "license": "MIT", "peerDependencies": { "next": "^14 || ^15", - "react": "^18.3.1" + "react": "^18.0.0 || ^19.0.0 || ^19.0.0-rc" } }, "node_modules/next-nprogress-bar": { @@ -47093,7 +47067,6 @@ "resolved": "https://registry.npmjs.org/ora/-/ora-8.1.1.tgz", "integrity": "sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==", "license": "MIT", - "peer": true, "dependencies": { "chalk": "^5.3.0", "cli-cursor": "^5.0.0", @@ -47617,7 +47590,6 @@ "resolved": "https://registry.npmjs.org/pg/-/pg-8.16.3.tgz", "integrity": "sha512-enxc1h0jA/aq5oSDMvqyW3q89ra6XIIDZgCX9vkMrnz5DFTw/Ny3Li2lFQ+pt3L6MCgm/5o2o8HW9hiJji+xvw==", "license": "MIT", - "peer": true, "dependencies": { "pg-connection-string": "^2.9.1", "pg-pool": "^3.10.1", @@ -48096,6 +48068,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } @@ -48150,7 +48123,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", @@ -48292,7 +48264,6 @@ "version": "6.1.2", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -48397,7 +48368,6 @@ "node_modules/prettier": { "version": "3.3.1", "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -48596,7 +48566,6 @@ "node_modules/prop-types": { "version": "15.8.1", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -49091,7 +49060,6 @@ "node_modules/react": { "version": "18.2.0", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0" }, @@ -49207,7 +49175,6 @@ "node_modules/react-dom": { "version": "18.2.0", "license": "MIT", - "peer": true, "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -49251,7 +49218,6 @@ "version": "7.52.2", "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.52.2.tgz", "integrity": "sha512-pqfPEbERnxxiNMPd0bzmt1tuaPcVccywFDpyk2uV5xCIBphHV5T8SVnX9/o3kplPE1zzKt77+YIoq+EMwJp56A==", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -49855,14 +49821,14 @@ "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", "license": "MIT", + "peer": true, "dependencies": { "esprima": "~4.0.0" } }, "node_modules/reflect-metadata": { "version": "0.2.2", - "license": "Apache-2.0", - "peer": true + "license": "Apache-2.0" }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", @@ -50107,7 +50073,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "@iarna/toml": "2.2.5", "@octokit/rest": "20.1.1", @@ -50153,7 +50118,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", - "peer": true, "dependencies": { "@octokit/auth-token": "^4.0.0", "@octokit/graphql": "^7.1.0", @@ -51162,7 +51126,6 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", "license": "MIT", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -51321,7 +51284,6 @@ "node_modules/rxjs": { "version": "7.8.1", "license": "Apache-2.0", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -51462,7 +51424,6 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -52811,6 +52772,7 @@ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.7.0.tgz", "integrity": "sha512-UTMhXK9SeDhFJVrHeUJ5uZlI6ajXg10O6Ddocf9S6GjbSBVZsJo88HzKwXznNfGpMTRDyJkqMjNDPYgf0qFWnw==", "license": "MIT", + "peer": true, "dependencies": { "@noble/hashes": "1.6.0" }, @@ -52826,6 +52788,7 @@ "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.6.0.tgz", "integrity": "sha512-YUULf0Uk4/mAA89w+k3+yUYh6NrEvxZa5T6SY3wlMvE2chHkxFUUIDI8/XW1QSC357iA5pSnqt7XEhvFOqmDyQ==", "license": "MIT", + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -52838,6 +52801,7 @@ "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.2.1.tgz", "integrity": "sha512-DGmGtC8Tt63J5GfHgfl5CuAXh96VF/LD8K9Hr/Gv0J2lAoRGlPOMpqMpMbCTOoOJMZCk2Xt+DskdDyn6dEFdzQ==", "license": "MIT", + "peer": true, "funding": { "url": "https://paulmillr.com/funding/" } @@ -53514,7 +53478,6 @@ "node_modules/tailwindcss": { "version": "3.4.4", "license": "MIT", - "peer": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -54174,7 +54137,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -54533,7 +54495,8 @@ "version": "6.0.4", "resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz", "integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/ts-node": { "version": "10.9.2", @@ -55512,7 +55475,6 @@ "resolved": "https://registry.npmjs.org/unleash-proxy-client/-/unleash-proxy-client-3.7.6.tgz", "integrity": "sha512-ft3KpFySRL7kY07DL9INh9q0E1hZj+ORR69ZCKpdeag0byn6gR7TMZenS1yF3Lh4zSNpTnprSjb8mmr3Nx3deg==", "license": "Apache-2.0", - "peer": true, "dependencies": { "tiny-emitter": "^2.1.0", "uuid": "^9.0.1" @@ -56300,7 +56262,6 @@ "version": "5.98.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.98.0.tgz", "integrity": "sha512-UFynvx+gM44Gv9qFgj0acCQK2VE1CtdfwFdimkapco3hlPCJ/zeq73n2yVKimVbtm+TnApIugGhLJnkU6gjYXA==", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.6", @@ -56404,7 +56365,6 @@ "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.10.0.tgz", "integrity": "sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==", "dev": true, - "peer": true, "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^1.2.0", @@ -56859,7 +56819,6 @@ "version": "8.17.1", "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -57151,7 +57110,6 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.2.tgz", "integrity": "sha512-DMricUmwGZUVr++AEAe2uiVM7UoO9MAVZMDu05UQOaUII0lp+zOzLLU4Xqh/JvTqklB1T4uELaaPBKyjE1r4fQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=10.0.0" }, @@ -57231,8 +57189,7 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/xterm/-/xterm-5.3.0.tgz", "integrity": "sha512-8QqjlekLUFTrU6x7xck1MsPzPA571K5zNqWm0M0oroYEWVOptZ0+ubQSkQ3uxIEhcIHRujJy6emDWX4A7qyFzg==", - "deprecated": "This package is now deprecated. Move to @xterm/xterm instead.", - "peer": true + "deprecated": "This package is now deprecated. Move to @xterm/xterm instead." }, "node_modules/xterm-addon-fit": { "version": "0.7.0", @@ -57338,7 +57295,6 @@ "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", "integrity": "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==", "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } @@ -57587,6 +57543,7 @@ "resolved": "https://registry.npmjs.org/@cosmjs/amino/-/amino-0.36.1.tgz", "integrity": "sha512-JRAtBA0bcIlhYZ5AXMT8VYUaxqVfEDiQbcEg0FLEIFofssj3V4aXFO93lsPI3AeWwRSZhWA+guGd/iHFC05UbQ==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@cosmjs/crypto": "^0.36.1", "@cosmjs/encoding": "^0.36.1", @@ -57599,6 +57556,7 @@ "resolved": "https://registry.npmjs.org/@cosmjs/crypto/-/crypto-0.36.1.tgz", "integrity": "sha512-7vx9rZAuboyMxs9zv3hZhNA0JAFMpaW+fFgRDQzZzfIVj0z4h8RW4dJu0xx5cv3KBQXmoRUzWklpnFuMQYiGdg==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@cosmjs/encoding": "^0.36.1", "@cosmjs/math": "^0.36.1", @@ -57614,6 +57572,7 @@ "resolved": "https://registry.npmjs.org/@cosmjs/encoding/-/encoding-0.36.1.tgz", "integrity": "sha512-i5dTiOdSAfyU76lmOm0+VLEIDEtmINtpOeAuzzBJP1er5fDJvpBysgY9MefVwXNBY/P46W10Uta9zQc98ehBXg==", "license": "Apache-2.0", + "peer": true, "dependencies": { "base64-js": "^1.3.0", "bech32": "^1.1.4", @@ -57625,6 +57584,7 @@ "resolved": "https://registry.npmjs.org/@cosmjs/json-rpc/-/json-rpc-0.36.1.tgz", "integrity": "sha512-7vpTw3r3vVaiMY9L0hDh2QP5RnmSim00DhQuqtrPz/qd740Q2xtxhO7UxnWOzL85gG1Tyr9KshE46QIhZcTU/Q==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@cosmjs/stream": "^0.36.1", "xstream": "^11.14.0" @@ -57634,7 +57594,8 @@ "version": "0.36.1", "resolved": "https://registry.npmjs.org/@cosmjs/math/-/math-0.36.1.tgz", "integrity": "sha512-ML5X5iupmTUV6bik+YEShrmK49ikB8jMQfgzdQV7qeBMN2Rc4ijd1/sFya5AiyJzxtBlYe7yv0i5NyNzZPqKpQ==", - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "packages/http-sdk/node_modules/@cosmjs/proto-signing": { "version": "0.36.1", @@ -57656,6 +57617,7 @@ "resolved": "https://registry.npmjs.org/@cosmjs/socket/-/socket-0.36.1.tgz", "integrity": "sha512-p6KgnQmlz1MYJjWi66xyLLYk0NqXFQ/OE5LlC6+Pj6tv7sxjhqsQiQYwfgKJjSwTbduXv2vOHrqEnKZ892E5Xw==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@cosmjs/stream": "^0.36.1", "isomorphic-ws": "^4.0.1", @@ -57685,6 +57647,7 @@ "resolved": "https://registry.npmjs.org/@cosmjs/stream/-/stream-0.36.1.tgz", "integrity": "sha512-q8TrUt7iiWGf6N5x7vWGqWIhtgPzTMkZlM73vkE4F3rcWbybJHgNu7inOhwnuJpR+gFZd9JNq+jAtjsbptZGag==", "license": "Apache-2.0", + "peer": true, "dependencies": { "xstream": "^11.14.0" } @@ -57694,6 +57657,7 @@ "resolved": "https://registry.npmjs.org/@cosmjs/tendermint-rpc/-/tendermint-rpc-0.36.1.tgz", "integrity": "sha512-9EN84YVqdgDLB97xFq+aqsolbMCyKwg6NcB/CR1s3DrquzJEx9/ZNEBJak/VVfb+croDFgvQd4X7CzqkW4N2ag==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@cosmjs/crypto": "^0.36.1", "@cosmjs/encoding": "^0.36.1", @@ -57710,13 +57674,15 @@ "version": "0.36.1", "resolved": "https://registry.npmjs.org/@cosmjs/utils/-/utils-0.36.1.tgz", "integrity": "sha512-kjdDD6t7dMLRUtbRCRskP7sNpyNf6cxVgaM2z7n64e6upXwE+bsoKfKrG+iY2ABT57oH6UxJYgcB+7ACmPxZCg==", - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "packages/http-sdk/node_modules/@noble/ciphers": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", "license": "MIT", + "peer": true, "engines": { "node": "^14.21.3 || >=16" }, @@ -57729,6 +57695,7 @@ "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", "license": "MIT", + "peer": true, "dependencies": { "@noble/hashes": "1.8.0" }, @@ -57755,7 +57722,8 @@ "version": "0.10.1", "resolved": "https://registry.npmjs.org/cosmjs-types/-/cosmjs-types-0.10.1.tgz", "integrity": "sha512-CENXb4O5GN+VyB68HYXFT2SOhv126Z59631rZC56m8uMWa6/cSlFeai8BwZGT1NMepw0Ecf+U8XSOnBzZUWh9Q==", - "license": "Apache-2.0" + "license": "Apache-2.0", + "peer": true }, "packages/http-sdk/node_modules/date-fns": { "version": "4.1.0", @@ -57771,6 +57739,7 @@ "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=8.3.0" }, From b96c198c7bb537cebb99d731f8c7c528915d8157 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sat, 27 Dec 2025 06:31:05 +0000 Subject: [PATCH 2/3] refactor: address code review feedback - remove unused import and consolidate tests Co-authored-by: stalniy <1159966+stalniy@users.noreply.github.com> --- .../NavigationGuardProvider.spec.tsx | 62 +++++++------------ 1 file changed, 22 insertions(+), 40 deletions(-) diff --git a/apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx b/apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx index ecd7789e51..bacbe2f65f 100644 --- a/apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx +++ b/apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx @@ -1,4 +1,4 @@ -import { act, render, screen } from "@testing-library/react"; +import { render, screen } from "@testing-library/react"; import { NavigationGuardProvider } from "next-navigation-guard"; describe("NavigationGuardProvider compatibility", () => { @@ -18,23 +18,34 @@ describe("NavigationGuardProvider compatibility", () => { }); it("should work without crypto.randomUUID (Android 10 compatibility)", () => { - // Simulate older browser without crypto.randomUUID - const cryptoWithoutRandomUUID = { - ...global.crypto, + // Simulate older browser without crypto.randomUUID (like Android 10) + // Create a minimal crypto object without randomUUID but with other standard methods + const oldBrowserCrypto = { + getRandomValues: (arr: any) => { + for (let i = 0; i < arr.length; i++) { + arr[i] = Math.floor(Math.random() * 256); + } + return arr; + }, + subtle: {} as SubtleCrypto, randomUUID: undefined } as any; - global.crypto = cryptoWithoutRandomUUID; + + global.crypto = oldBrowserCrypto; - // Should not throw an error when rendering - expect(() => { + let error: Error | null = null; + try { render( -
Test Content
+
Old Browser Compatible
); - }).not.toThrow(); + } catch (e) { + error = e as Error; + } - expect(screen.getByText("Test Content")).toBeInTheDocument(); + expect(error).toBeNull(); + expect(screen.getByTestId("old-browser-test")).toBeInTheDocument(); }); it("should render children successfully", () => { @@ -48,7 +59,7 @@ describe("NavigationGuardProvider compatibility", () => { expect(screen.getByText("Navigation Guard Works")).toBeInTheDocument(); }); - it("should work when crypto object is completely missing", () => { + it("should work without crypto object (very old browsers)", () => { // Simulate very old browser without crypto at all delete (global as any).crypto; @@ -78,33 +89,4 @@ describe("NavigationGuardProvider compatibility", () => { expect(screen.getByTestId("provider-1")).toBeInTheDocument(); expect(screen.getByTestId("provider-2")).toBeInTheDocument(); }); - - it("should work in simulated old browser environment (no crypto.randomUUID)", () => { - // Create a minimal crypto object without randomUUID (like Android 10) - const oldBrowserCrypto = { - getRandomValues: (arr: any) => { - for (let i = 0; i < arr.length; i++) { - arr[i] = Math.floor(Math.random() * 256); - } - return arr; - }, - subtle: {} as SubtleCrypto - } as Crypto; - - global.crypto = oldBrowserCrypto; - - let error: Error | null = null; - try { - render( - -
Old Browser Compatible
-
- ); - } catch (e) { - error = e as Error; - } - - expect(error).toBeNull(); - expect(screen.getByTestId("old-browser-test")).toBeInTheDocument(); - }); }); From 88d4eab6c4feb0635c6d0ac3c492e70e79e52b77 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Mon, 29 Dec 2025 12:02:56 +0000 Subject: [PATCH 3/3] refactor: remove NavigationGuardProvider.spec.tsx test file Co-authored-by: stalniy <1159966+stalniy@users.noreply.github.com> --- .../NavigationGuardProvider.spec.tsx | 92 ------------------- 1 file changed, 92 deletions(-) delete mode 100644 apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx diff --git a/apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx b/apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx deleted file mode 100644 index bacbe2f65f..0000000000 --- a/apps/deploy-web/src/hooks/useNavigationGuard/NavigationGuardProvider.spec.tsx +++ /dev/null @@ -1,92 +0,0 @@ -import { render, screen } from "@testing-library/react"; -import { NavigationGuardProvider } from "next-navigation-guard"; - -describe("NavigationGuardProvider compatibility", () => { - // Store original crypto object - const originalCrypto = global.crypto; - - beforeEach(() => { - // Reset history state before each test - if (typeof window !== "undefined" && window.history) { - window.history.replaceState({}, "", "/"); - } - }); - - afterEach(() => { - // Restore original crypto - global.crypto = originalCrypto; - }); - - it("should work without crypto.randomUUID (Android 10 compatibility)", () => { - // Simulate older browser without crypto.randomUUID (like Android 10) - // Create a minimal crypto object without randomUUID but with other standard methods - const oldBrowserCrypto = { - getRandomValues: (arr: any) => { - for (let i = 0; i < arr.length; i++) { - arr[i] = Math.floor(Math.random() * 256); - } - return arr; - }, - subtle: {} as SubtleCrypto, - randomUUID: undefined - } as any; - - global.crypto = oldBrowserCrypto; - - let error: Error | null = null; - try { - render( - -
Old Browser Compatible
-
- ); - } catch (e) { - error = e as Error; - } - - expect(error).toBeNull(); - expect(screen.getByTestId("old-browser-test")).toBeInTheDocument(); - }); - - it("should render children successfully", () => { - render( - -
Navigation Guard Works
-
- ); - - expect(screen.getByTestId("child-content")).toBeInTheDocument(); - expect(screen.getByText("Navigation Guard Works")).toBeInTheDocument(); - }); - - it("should work without crypto object (very old browsers)", () => { - // Simulate very old browser without crypto at all - delete (global as any).crypto; - - expect(() => { - render( - -
Test Content Without Crypto
-
- ); - }).not.toThrow(); - - expect(screen.getByText("Test Content Without Crypto")).toBeInTheDocument(); - }); - - it("should handle multiple provider instances", () => { - render( - <> - -
Provider 1
-
- -
Provider 2
-
- - ); - - expect(screen.getByTestId("provider-1")).toBeInTheDocument(); - expect(screen.getByTestId("provider-2")).toBeInTheDocument(); - }); -});