Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
WalkthroughThis PR upgrades Node.js to 22 across CI and Docker, bumps PNPM and many dependencies, replaces deep type imports with package-scoped ChangesNode.js 22 Upgrade and Dependency Refresh
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
|
✅ All snapshot tests passed |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (3)
Dockerfile (1)
1-1: ⚡ Quick winPin base images by digest for reproducibility and supply-chain security.
Tags like
node:22-bookwormare mutable and can change silently over time. Docker recommends pinning by digest (node:22-bookworm@sha256:...) to ensure build consistency and prevent unexpected runtime behavior.Suggested Dockerfile pattern
-FROM node:22-bookworm AS builder +FROM node:22-bookworm@sha256:<builder_digest> AS builder ... -FROM node:22-alpine AS runner +FROM node:22-alpine@sha256:<runner_digest> AS runnerAlso applies to: 30-30
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@Dockerfile` at line 1, Replace the mutable base image tag used in the Dockerfile by pinning it to a specific digest: update the FROM statement that currently reads "FROM node:22-bookworm" to use the corresponding SHA256 digest for the exact image you want (i.e., "FROM node:22-bookworm@sha256:...") so builds are reproducible and supply-chain safe; ensure you fetch the correct digest from the official Node image registry and apply the same digest-pinning approach to any other similar FROM lines (e.g., the one referenced as 30-30).src/hooks/quests/useFormatDisplayQuestData.ts (1)
9-9: ⚡ Quick winUse a type-only import here.
Line 9 imports
RootNodeas a value import, but it is only used in type positions (line 16 in the interface). Switching toimport typeimproves code clarity and enables better tree-shaking.Proposed fix
-import { RootNode } from '@strapi/blocks-react-renderer/dist/BlocksRenderer'; +import type { RootNode } from '@strapi/blocks-react-renderer/dist/BlocksRenderer';🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/hooks/quests/useFormatDisplayQuestData.ts` at line 9, The import for RootNode is currently a value import but only used as a type in the useFormatDisplayQuestData code; change the statement to a type-only import (import type { RootNode } from '...') so the compiler/tree-shaker knows it's purely a type and not a runtime dependency, updating the import that provides RootNode to use the "import type" form; verify references to RootNode in the interface (used in useFormatDisplayQuestData) remain unchanged.src/types/announcement.ts (1)
1-1: ⚡ Quick winUse
import typeforRootNodesince it's only used in type positions.Line 1 should use
import type { RootNode } from '@strapi/blocks-react-renderer/dist/BlocksRenderer';(currently used at lines 9 and 24 as interface property types only).🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/types/announcement.ts` at line 1, The import of RootNode is only used in type positions; change the statement to a type-only import by replacing the current import with "import type { RootNode } from '@strapi/blocks-react-renderer/dist/BlocksRenderer';" so TypeScript and bundlers can erase it at runtime—update the existing import declaration that brings in RootNode (used in the interfaces at lines where properties reference RootNode) to an "import type" form.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@package.json`:
- Around line 8-9: The package.json runtime field declares "node": ">=22.0.0"
but the dev dependency "@types/node" is set to major 25; change the
"@types/node" version to a 22.x major (or a range compatible with Node 22) so
TypeScript types match the runtime; locate the "@types/node" entry in
package.json and update its version string (e.g., 22.x) and run a
reinstall/typecheck to confirm no type regressions in code paths using Node
APIs.
In `@src/components/ImageGeneration/imageResponseOptions.ts`:
- Line 1: The file imports the internal Next.js Satori Font type; replace that
fragile import by declaring a local Font structural type matching the documented
shape ({ name: string; data: ArrayBuffer; weight?: number; style?: 'normal' |
'italic' }) and use that local type wherever the imported Font was referenced
(e.g., type annotations in imageResponseOptions.ts and
getImageResponseOptions.ts and any functions like getImageResponseOptions or
exported image response option objects); remove the import line for
"next/dist/compiled/@vercel/og/satori" and update all references to use the
local Font type to avoid depending on the internal Next bundle.
In `@tsconfig.json`:
- Around line 27-29: The tsconfig path mapping currently hardcodes the internal
module "@strapi/blocks-react-renderer/dist/BlocksRenderer" which ties the build
to the package's internal layout; replace that mapping so consumers import the
public types from the package root (e.g. use the exported BlocksContent type
which represents RootNode[]) instead of pointing to
"./node_modules/@strapi/blocks-react-renderer/dist/BlocksRenderer.d.ts"; update
the tsconfig paths to remove the hardcoded dist alias and, where necessary,
change imports to reference "@strapi/blocks-react-renderer" (or explicitly
BlocksContent) so you rely on the package's public API rather than internal
files.
---
Nitpick comments:
In `@Dockerfile`:
- Line 1: Replace the mutable base image tag used in the Dockerfile by pinning
it to a specific digest: update the FROM statement that currently reads "FROM
node:22-bookworm" to use the corresponding SHA256 digest for the exact image you
want (i.e., "FROM node:22-bookworm@sha256:...") so builds are reproducible and
supply-chain safe; ensure you fetch the correct digest from the official Node
image registry and apply the same digest-pinning approach to any other similar
FROM lines (e.g., the one referenced as 30-30).
In `@src/hooks/quests/useFormatDisplayQuestData.ts`:
- Line 9: The import for RootNode is currently a value import but only used as a
type in the useFormatDisplayQuestData code; change the statement to a type-only
import (import type { RootNode } from '...') so the compiler/tree-shaker knows
it's purely a type and not a runtime dependency, updating the import that
provides RootNode to use the "import type" form; verify references to RootNode
in the interface (used in useFormatDisplayQuestData) remain unchanged.
In `@src/types/announcement.ts`:
- Line 1: The import of RootNode is only used in type positions; change the
statement to a type-only import by replacing the current import with "import
type { RootNode } from '@strapi/blocks-react-renderer/dist/BlocksRenderer';" so
TypeScript and bundlers can erase it at runtime—update the existing import
declaration that brings in RootNode (used in the interfaces at lines where
properties reference RootNode) to an "import type" form.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 1e847063-e2cf-4786-b700-a587f563ab0a
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (19)
.github/workflows/checks.yml.github/workflows/playwright.ymlDockerfileREADME.mdeslint.config.mjspackage.jsonsrc/components/AccordionFAQ/AccordionFAQ.tsxsrc/components/AccordionFAQ/AccordionFAQItem.tsxsrc/components/ImageGeneration/imageResponseOptions.tssrc/components/RichBlocks/RichBlocks.tsxsrc/hooks/quests/useFormatDisplayQuestData.tssrc/i18n/translations/index.tssrc/types/announcement.tssrc/types/internal.tssrc/types/loyaltyPass.tssrc/types/strapi.tssrc/utils/instrumentation/lifiSdkConfig.tssrc/utils/richBlocks/getTableOfContentsFromContent.tstsconfig.json
| @@ -1,4 +1,4 @@ | |||
| import type { Font } from 'node_modules/next/dist/compiled/@vercel/og/satori'; | |||
| import type { Font } from 'next/dist/compiled/@vercel/og/satori'; | |||
There was a problem hiding this comment.
🧩 Analysis chain
🌐 Web query:
In Next.js 15/16, is importing from next/dist/compiled/@vercel/og/satorisupported public API, or should OG font types come from publicnext/og usage patterns (or local structural typing)?
💡 Result:
Importing directly from next/dist/compiled/@vercel/og/satori is not a supported public API in Next.js 15/16. Official documentation consistently directs users to import ImageResponse from the public next/og module for OG image generation, including custom fonts [1][2][3][4][5]. The ImageResponse constructor accepts a fonts option with type { name: string, data: ArrayBuffer, weight?: number, style?: 'normal' | 'italic' }[], allowing OG font types to be passed directly without needing Satori types explicitly [4][5]. next/dist/compiled/@vercel/og/satori is an internal bundled dependency (vendored Satori library used by @vercel/og and next/og) [6][7][8][9]. Direct imports from dist/compiled paths are discouraged as they are not public APIs, can break across versions (e.g., type deletions noted in PRs [6]), and violate Next.js bundling assumptions. Instead, use next/og public patterns or define local structural types matching the documented fonts shape for type safety—no Satori import required [4]. Next.js 16 docs/blog confirm continuity of this API from 15 [10]. No official sources endorse or document direct Satori imports for user code.
Citations:
- 1: https://nextjs.im/docs/15/app/getting-started/metadata-and-og-images
- 2: https://nextjs.org/docs/app/api-reference/file-conventions/metadata/opengraph-image
- 3: https://nextjs.org/docs/app/getting-started/metadata-and-og-images
- 4: https://vercel-next-js.mintlify.app/api-reference/functions/image-response
- 5: https://nextjs.im/docs/14/app/api-reference/functions/image-response/
- 6: Update
@vercel/ogandsatorivendors vercel/next.js#90933 - 7: Satori version outdated in @vercel/og + next/og vercel/next.js#72940
- 8: https://nextjs.journalducameroun.com/node_modules/next/dist/compiled/@vercel/og/satori/index.d.ts
- 9: https://sunevent.suneducationgroup.com/node_modules/next/dist/compiled/@vercel/og/satori/
- 10: https://nextjs.org/blog/next-16
🏁 Script executed:
# First, let's verify the exact content of the file mentioned
cat -n src/components/ImageGeneration/imageResponseOptions.ts | head -20Repository: jumperexchange/jumper-exchange
Length of output: 700
🏁 Script executed:
# Search for all imports from next/dist/compiled/@vercel/og/satori in the codebase
rg "next/dist/compiled/@vercel/og/satori" --type ts --type tsxRepository: jumperexchange/jumper-exchange
Length of output: 102
🏁 Script executed:
# Also check if there are any imports from the public next/og module
rg "from ['\"]next/og['\"]" --type ts --type tsxRepository: jumperexchange/jumper-exchange
Length of output: 102
🏁 Script executed:
# Search for internal satori imports with correct syntax
rg 'next/dist/compiled/@vercel/og/satori' --type tsRepository: jumperexchange/jumper-exchange
Length of output: 314
🏁 Script executed:
# Also search without type flag to catch all files
rg 'next/dist/compiled/@vercel/og/satori'Repository: jumperexchange/jumper-exchange
Length of output: 314
🏁 Script executed:
# Check for next/og imports
rg "from ['\"]next/og['\"]"Repository: jumperexchange/jumper-exchange
Length of output: 631
🏁 Script executed:
# Check if Font type is actually used in the file
cat -n src/components/ImageGeneration/imageResponseOptions.tsRepository: jumperexchange/jumper-exchange
Length of output: 1855
Replace internal Satori import with local structural typing.
next/dist/compiled/@vercel/og/satori is an internal Next.js bundled dependency that is not part of the public API and can break on framework upgrades. Use the documented font type shape instead: { name: string, data: ArrayBuffer, weight?: number, style?: 'normal' | 'italic' }.
This issue exists in two files:
src/components/ImageGeneration/imageResponseOptions.tssrc/utils/ImageGeneration/getImageResponseOptions.ts
Local type definition
-import type { Font } from 'next/dist/compiled/@vercel/og/satori';
+type Font = {
+ name: string;
+ data: ArrayBuffer;
+ weight?: number;
+ style?: 'normal' | 'italic';
+};📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| import type { Font } from 'next/dist/compiled/@vercel/og/satori'; | |
| type Font = { | |
| name: string; | |
| data: ArrayBuffer; | |
| weight?: number; | |
| style?: 'normal' | 'italic'; | |
| }; |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/components/ImageGeneration/imageResponseOptions.ts` at line 1, The file
imports the internal Next.js Satori Font type; replace that fragile import by
declaring a local Font structural type matching the documented shape ({ name:
string; data: ArrayBuffer; weight?: number; style?: 'normal' | 'italic' }) and
use that local type wherever the imported Font was referenced (e.g., type
annotations in imageResponseOptions.ts and getImageResponseOptions.ts and any
functions like getImageResponseOptions or exported image response option
objects); remove the import line for "next/dist/compiled/@vercel/og/satori" and
update all references to use the local Font type to avoid depending on the
internal Next bundle.
Playwright test results
Details
Failed testschromium › earnPage.spec.ts › Analytics filters on Earn page › Should be able to verify analytics buttons are visible (Qase ID: 47) Flaky testschromium › mainMenu.spec.ts › Main Menu flows › Should be able to navigate to the Jumper Learn (Qase ID: 22) Skipped testschromium › themeManipulation.spec.ts › Switch between dark and light theme and check the background color › Partner theme should appear in theme menu and apply background color (Qase ID: 49) |
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
src/hooks/quests/useFormatDisplayQuestData.ts (1)
3-13: ⚡ Quick winUse
@/path aliases instead ofsrc/for the changed imports.Lines 3–7, 11, and 12 were modified in this PR and now use
src/prefixes, which violates the project guideline. Since both aliases resolve to the same./src/, this is a trivial one-pass fix.♻️ Proposed fix
import type { ParticipantChain, Quest, RewardGroup, -} from 'src/types/loyaltyPass'; +} from '@/types/loyaltyPass'; import { capitalizeString } from 'src/utils/capitalizeString'; import { getStrapiBaseUrl } from 'src/utils/strapi/strapiHelper'; import { useFormatDisplayRewardsData } from './useFormatDisplayRewardsData'; -import type { QuestData } from 'src/types/strapi'; -import type { Chain } from 'src/types/questDetails'; +import type { QuestData } from '@/types/strapi'; +import type { Chain } from '@/types/questDetails'; import type { BlocksContent } from '@strapi/blocks-react-renderer';As per coding guidelines: "Prefer
@/oversrc/path aliases in new code (both resolve to./src/)".🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@src/hooks/quests/useFormatDisplayQuestData.ts` around lines 3 - 13, Update the changed import paths in useFormatDisplayQuestData.ts to use the project alias '@/...' instead of 'src/...': replace imports for ParticipantChain, Quest, RewardGroup, capitalizeString, getStrapiBaseUrl, useFormatDisplayRewardsData, QuestData, Chain, and BlocksContent so their module specifiers start with '@/'. Ensure only the import paths change (not the imported symbol names) so all references like ParticipantChain, Quest, RewardGroup, capitalizeString, getStrapiBaseUrl, useFormatDisplayRewardsData, QuestData, Chain, and BlocksContent continue to resolve.package.json (1)
27-40: ⚡ Quick winStandardize to exact versions for pre-release LiFi packages.
Lines 27-40 mix caret (
^) and exact version specifiers for alpha/beta packages. For consistency and clarity across this tightly-coupled SDK/provider family, use exact versions for all pre-release packages.Proposed change
- "@lifi/sdk": "^4.0.1-alpha.0", + "@lifi/sdk": "4.0.1-alpha.0", - "@lifi/sdk-provider-bitcoin": "^4.0.1-alpha.0", + "@lifi/sdk-provider-bitcoin": "4.0.1-alpha.0", - "@lifi/sdk-provider-ethereum": "^4.0.1-alpha.0", + "@lifi/sdk-provider-ethereum": "4.0.1-alpha.0", - "@lifi/sdk-provider-solana": "^4.0.1-alpha.0", + "@lifi/sdk-provider-solana": "4.0.1-alpha.0", - "@lifi/sdk-provider-sui": "^4.0.1-alpha.0", + "@lifi/sdk-provider-sui": "4.0.1-alpha.0", - "@lifi/sdk-provider-tron": "^4.0.0-beta.8", + "@lifi/sdk-provider-tron": "4.0.0-beta.8", - "@lifi/widget-provider-bitcoin": "^4.0.0-beta.18", + "@lifi/widget-provider-bitcoin": "4.0.0-beta.18", - "@lifi/widget-provider-ethereum": "^4.0.0-beta.18", + "@lifi/widget-provider-ethereum": "4.0.0-beta.18", - "@lifi/widget-provider-solana": "^4.0.0-beta.18", + "@lifi/widget-provider-solana": "4.0.0-beta.18", - "@lifi/widget-provider-sui": "^4.0.0-beta.18", + "@lifi/widget-provider-sui": "4.0.0-beta.18", - "@lifi/widget-provider-tron": "^4.0.0-beta.18", + "@lifi/widget-provider-tron": "4.0.0-beta.18",🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@package.json` around lines 27 - 40, Change the pre-release LiFi dependencies from range specs to exact versions: replace caret-prefixed versions for the listed packages (e.g., "@lifi/sdk", "@lifi/sdk-provider-bitcoin", "@lifi/sdk-provider-ethereum", "@lifi/sdk-provider-solana", "@lifi/sdk-provider-sui", "@lifi/widget-provider-bitcoin", "@lifi/widget-provider-ethereum", "@lifi/widget-provider-solana", "@lifi/widget-provider-sui", and any other alpha/beta "@lifi/..." entries) with the exact version strings (remove the leading "^") so all alpha/beta packages use exact versions to ensure consistency across the SDK/provider family.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@package.json`:
- Line 103: The package.json forces ESLint 10 via allowedVersions.eslint which
conflicts with eslint-plugin-jsx-a11y (peer range excludes ESLint 10); update
package.json to either (A) bump eslint-plugin-jsx-a11y in
dependencies/devDependencies to a release that lists ESLint 10 in its
peerDependencies (locate the eslint-plugin-jsx-a11y entry and increase its
version), or (B) remove/adjust the allowedVersions.eslint: "10" rule in the pnpm
config (the allowedVersions block) so the package manager surfaces the
peer-dependency conflict; ensure you do one of these and run install to verify
no peer warnings remain.
---
Nitpick comments:
In `@package.json`:
- Around line 27-40: Change the pre-release LiFi dependencies from range specs
to exact versions: replace caret-prefixed versions for the listed packages
(e.g., "@lifi/sdk", "@lifi/sdk-provider-bitcoin", "@lifi/sdk-provider-ethereum",
"@lifi/sdk-provider-solana", "@lifi/sdk-provider-sui",
"@lifi/widget-provider-bitcoin", "@lifi/widget-provider-ethereum",
"@lifi/widget-provider-solana", "@lifi/widget-provider-sui", and any other
alpha/beta "@lifi/..." entries) with the exact version strings (remove the
leading "^") so all alpha/beta packages use exact versions to ensure consistency
across the SDK/provider family.
In `@src/hooks/quests/useFormatDisplayQuestData.ts`:
- Around line 3-13: Update the changed import paths in
useFormatDisplayQuestData.ts to use the project alias '@/...' instead of
'src/...': replace imports for ParticipantChain, Quest, RewardGroup,
capitalizeString, getStrapiBaseUrl, useFormatDisplayRewardsData, QuestData,
Chain, and BlocksContent so their module specifiers start with '@/'. Ensure only
the import paths change (not the imported symbol names) so all references like
ParticipantChain, Quest, RewardGroup, capitalizeString, getStrapiBaseUrl,
useFormatDisplayRewardsData, QuestData, Chain, and BlocksContent continue to
resolve.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 0f56707c-c424-41fc-b445-d92489ae8ec9
⛔ Files ignored due to path filters (9)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yamlsrc/components/Cards/EarnCard/__snapshots__/EarnCard.snapshot.spec.tsx.snapis excluded by!**/*.snapsrc/components/Cards/HeroEarnCard/__snapshots__/HeroEarnCard.snapshot.spec.tsx.snapis excluded by!**/*.snapsrc/components/Cards/ProtocolCard/__snapshots__/ProtocolCard.snapshot.spec.tsx.snapis excluded by!**/*.snapsrc/components/composite/DepositButton/__snapshots__/DepositButton.snapshot.spec.tsx.snapis excluded by!**/*.snapsrc/components/composite/WalletBalanceCard/__snapshots__/WalletBalanceCard.snapshot.spec.tsx.snapis excluded by!**/*.snapsrc/components/composite/cards/ProcessingTransactionCard/__snapshots__/ProcessingTransactionCard.snapshot.spec.tsx.snapis excluded by!**/*.snapsrc/components/core/Percent/__snapshots__/Percent.snapshot.spec.tsx.snapis excluded by!**/*.snapsrc/components/core/buttons/Button/__snapshots__/Button.snapshot.spec.tsx.snapis excluded by!**/*.snap
📒 Files selected for processing (10)
package.jsonsrc/components/AccordionFAQ/AccordionFAQ.tsxsrc/components/AccordionFAQ/AccordionFAQItem.tsxsrc/components/RichBlocks/RichBlocks.tsxsrc/hooks/quests/useFormatDisplayQuestData.tssrc/types/announcement.tssrc/types/loyaltyPass.tssrc/types/strapi.tssrc/utils/richBlocks/getTableOfContentsFromContent.tstsconfig.json
✅ Files skipped from review due to trivial changes (1)
- src/components/AccordionFAQ/AccordionFAQItem.tsx
🚧 Files skipped from review as they are similar to previous changes (2)
- src/components/AccordionFAQ/AccordionFAQ.tsx
- src/types/strapi.ts
| "@next/eslint-plugin-next": "16.2.3", | ||
| "@playwright/test": "1.58.2", | ||
| "@rainbow-me/rainbowkit": "^2.2.10", | ||
| "@eslint/js": "^10.0.1", |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Check peer dependency ranges of lint stack against eslint@10.
packages=(
"@eslint/js@10.0.1"
"@next/eslint-plugin-next@16.2.5"
"eslint-plugin-jsx-a11y@6.10.2"
"eslint-plugin-react-hooks@7.1.1"
"eslint-config-prettier@10.1.8"
"typescript-eslint@8.59.2"
)
for pkg in "${packages[@]}"; do
echo "=== $pkg ==="
npm view "$pkg" peerDependencies --json || true
echo
doneRepository: jumperexchange/jumper-exchange
Length of output: 1585
🏁 Script executed:
cat -n package.json | head -220 | tail -40Repository: jumperexchange/jumper-exchange
Length of output: 1320
🏁 Script executed:
rg "allowedVersions|eslint-plugin-jsx-a11y" package.json -A 2 -B 2Repository: jumperexchange/jumper-exchange
Length of output: 348
allowedVersions.eslint: "10" hides incompatibility with eslint-plugin-jsx-a11y@6.10.2.
This package does not support ESLint 10 (peer range excludes it: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9). The pnpm configuration at lines 198–201 suppresses peer-dependency warnings during installation, deferring the incompatibility to runtime when ESLint executes, potentially causing linting failures.
Upgrade eslint-plugin-jsx-a11y to a version that supports ESLint 10, or remove the allowedVersions.eslint: "10" rule if this incompatibility cannot be resolved.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@package.json` at line 103, The package.json forces ESLint 10 via
allowedVersions.eslint which conflicts with eslint-plugin-jsx-a11y (peer range
excludes ESLint 10); update package.json to either (A) bump
eslint-plugin-jsx-a11y in dependencies/devDependencies to a release that lists
ESLint 10 in its peerDependencies (locate the eslint-plugin-jsx-a11y entry and
increase its version), or (B) remove/adjust the allowedVersions.eslint: "10"
rule in the pnpm config (the allowedVersions block) so the package manager
surfaces the peer-dependency conflict; ensure you do one of these and run
install to verify no peer warnings remain.
Which Jira task belongs to this PR?
Why did I implement it this way?
Checklist before requesting a review
Summary by CodeRabbit
Chores
Refactor
Style