Skip to content

chore(deps-dev): bump the eslint group across 1 directory with 4 updates - #3856

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bun/eslint-97682f8f0f
Open

chore(deps-dev): bump the eslint group across 1 directory with 4 updates#3856
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/bun/eslint-97682f8f0f

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Apr 26, 2026

Copy link
Copy Markdown
Contributor

Bumps the eslint group with 4 updates in the / directory: eslint, eslint-plugin-ember, eslint-plugin-n and eslint-plugin-qunit.

Updates eslint from 9.39.2 to 10.5.0

Release notes

Sourced from eslint's releases.

v10.5.0

Features

  • 5ca8c52 feat: correct stack tracking in max-nested-callbacks (#20973) (Pixel998)
  • b565783 feat: report no-with violations at the with keyword (#20971) (Pixel998)
  • 2ce032f feat: report max-lines-per-function violations at function head (#20966) (Pixel998)
  • 732cb3e feat: report max-nested-callbacks violations at function head (#20967) (Pixel998)
  • f9c138a feat: report max-depth violations on keywords (#20943) (Pixel998)
  • bdb496c feat: correct max-depth handling for else-if chains (#20944) (Pixel998)
  • c296873 feat: update error loc in max-statements to function header (#20907) (Taejin Kim)

Documentation

  • 8ae1b5b docs: Update README (GitHub Actions Bot)
  • ca7eb90 docs: update Node.js prerequisites to include ICU support (#20962) (Francesco Trotta)
  • f99b47a docs: Update README (GitHub Actions Bot)
  • acf03d4 docs: clarify precedence of parserOptions over languageOptions (#20926) (sethamus)

Chores

  • b18bf58 chore: update ecosystem plugins (#20959) (ESLint Bot)
  • c2d1444 refactor: replace areAllSegmentsUnreachable with !isAnySegmentReachable (#20951) (Taejin Kim)
  • 243b8c5 chore: enhance config-rule to support oneOf, anyOf, and nested schemas (#20788) (kuldeep kumar)
  • 217b2a9 test: add unit tests for ParserService (#20949) (Taejin Kim)
  • 72003e7 test: add location information to error messages in max-statements (#20945) (lumir)
  • 7797c26 refactor: deduplicate isAnySegmentReachable across rules (#20890) (Taejin Kim)
  • 67c46fa chore: update ecosystem plugins (#20938) (ESLint Bot)
  • 95d8c7a chore: update dependency @​eslint/json to v2 (#20934) (renovate[bot])
  • cf9e496 chore: update @​arethetypeswrong/cli to 0.18.3 (#20933) (Pixel998)
  • fb6d396 test: run type tests with TypeScript 7 (#20868) (sethamus)

v10.4.1

Bug Fixes

  • e557467 fix: update @eslint/plugin-kit version to 0.7.2 (#20930) (Francesco Trotta)
  • d4ce898 fix: propagate failures from delegated commands (#20917) (Minh Vu)
  • f4f3507 fix: prefer-arrow-callback invalid autofix with newline after async (#20916) (kuldeep kumar)
  • c5bc78b fix: false positive for reference in finally block (#20655) (Tanuj Kanti)
  • 27538c0 fix: add missing CodePath and CodePathSegment types (#20853) (Pixel998)

Documentation

  • 61b0add docs: remove deprecated rule from related rules of max-params (#20921) (Tanuj Kanti)
  • 305d5b9 docs: remove deprecated rules from related rules section (#20911) (Tanuj Kanti)
  • 49b0202 docs: fix display: none of ad (#20901) (Tanuj Kanti)
  • 9067f94 docs: switch build to Node.js 24 (#20893) (Milos Djermanovic)
  • c91b041 docs: Update README (GitHub Actions Bot)
  • e349265 docs: clarify semver strings in rule deprecation objects (#20885) (Milos Djermanovic)

Chores

  • b0e466b test: add data property to invalid tests cases for rules (#20924) (Tanuj Kanti)
  • f78838b test: add CodePath type coverage (#20904) (Pixel998)
  • 1daa4bd chore: update eslint-plugin-eslint-comments test data to latest commit (#20922) (Francesco Trotta)
  • 002942c ci: declare contents:read on update-readme workflow (#20919) (Arpit Jain)
  • 64bca24 chore: update ecosystem plugins (#20912) (ESLint Bot)

... (truncated)

Commits

Updates eslint-plugin-ember from 12.7.5 to 13.3.2

Release notes

Sourced from eslint-plugin-ember's releases.

v13.3.2

Release (2026-05-29)

  • eslint-plugin-ember 13.3.2 (patch)

🐛 Bug Fix

Committers: 1

v13.3.1

Release (2026-05-28)

  • eslint-plugin-ember 13.3.1 (patch)

🐛 Bug Fix

Committers: 1

v13.3.0

Release (2026-05-17)

  • eslint-plugin-ember 13.3.0 (minor)

🚀 Enhancement

🐛 Bug Fix

Committers: 2

v13.2.1

Release (2026-04-30)

  • eslint-plugin-ember 13.2.1 (patch)

🐛 Bug Fix

  • eslint-plugin-ember
    • #2767 fix(require-input-label): don't count id as extra label when aria-label/labelledby present (@​johanrd)

... (truncated)

Changelog

Sourced from eslint-plugin-ember's changelog.

Changelog

Release (2026-05-29)

  • eslint-plugin-ember 13.3.2 (patch)

🐛 Bug Fix

Committers: 1

Release (2026-05-28)

  • eslint-plugin-ember 13.3.1 (patch)

🐛 Bug Fix

Committers: 1

Release (2026-05-17)

  • eslint-plugin-ember 13.3.0 (minor)

🚀 Enhancement

🐛 Bug Fix

Committers: 2

Release (2026-04-30)

  • eslint-plugin-ember 13.2.1 (patch)

🐛 Bug Fix

  • eslint-plugin-ember
    • #2767 fix(require-input-label): don't count id as extra label when aria-label/labelledby present (@​johanrd)
    • #2772 fix(template-no-nested-interactive): More useful error message (@​johanrd)

... (truncated)

Commits
Maintainer changes

This version was pushed to npm by GitHub Actions, a new releaser for eslint-plugin-ember since your current version.


Updates eslint-plugin-n from 17.23.2 to 18.1.0

Release notes

Sourced from eslint-plugin-n's releases.

v18.1.0

18.1.0 (2026-06-08)

🌟 Features

  • Allow workspace root dependencies for no-extraneous-import (#536) (fd4f84e)
  • support devEngines.runtime from package.json (#530) (9ef3c32)

🩹 Fixes

  • Allow leading forwardslash in package.json "files" field (#534) (#535) (5fde036)
  • no-extraneous-import for type-only @​types dependencies (#533) (63a90ef)
  • prefer-promises/fs: add missing fs.promises APIs (cp, glob, lutimes, opendir, rm, statfs) (#532) (75fbe34)

📚 Documentation

  • fix usage in README.md (c1b1b84)
  • Update online playground link in README (058916a)

v18.0.1

18.0.1 (2026-05-05)

🩹 Fixes

  • Update TypeScript peer dependency version constraint (8906195)

v18.0.0

18.0.0 (2026-05-04)

⚠ BREAKING CHANGES

  • migrate commonjs to esm (#510)
  • no-sync: move ts-declaration-location to peerDependencies
  • no-unpublished-bin: disallow extra properties in options (#456)
  • remove no-unpublished-bin from recommended (#485)
  • requires node.js >=20 & eslint >= 8.57.1 (#503)

🌟 Features

  • migrate commonjs to esm (#510) (db64bd1)
  • no-sync: move ts-declaration-location to peerDependencies (4729438)
  • node-builtins: add support data for Node.js 22.20–22.21 and 24.0–24.12 (#496) (e8e0b00)
  • requires node.js >=20 & eslint >= 8.57.1 (#503) (1d6770e)

... (truncated)

Changelog

Sourced from eslint-plugin-n's changelog.

18.1.0 (2026-06-08)

🌟 Features

  • Allow workspace root dependencies for no-extraneous-import (#536) (fd4f84e)
  • support devEngines.runtime from package.json (#530) (9ef3c32)

🩹 Fixes

  • Allow leading forwardslash in package.json "files" field (#534) (#535) (5fde036)
  • no-extraneous-import for type-only @​types dependencies (#533) (63a90ef)
  • prefer-promises/fs: add missing fs.promises APIs (cp, glob, lutimes, opendir, rm, statfs) (#532) (75fbe34)

📚 Documentation

  • fix usage in README.md (c1b1b84)
  • Update online playground link in README (058916a)

18.0.1 (2026-05-05)

🩹 Fixes

  • Update TypeScript peer dependency version constraint (8906195)

18.0.0 (2026-05-04)

⚠ BREAKING CHANGES

  • migrate commonjs to esm (#510)
  • no-sync: move ts-declaration-location to peerDependencies
  • no-unpublished-bin: disallow extra properties in options (#456)
  • remove no-unpublished-bin from recommended (#485)
  • requires node.js >=20 & eslint >= 8.57.1 (#503)

🌟 Features

  • migrate commonjs to esm (#510) (db64bd1)
  • no-sync: move ts-declaration-location to peerDependencies (4729438)
  • node-builtins: add support data for Node.js 22.20–22.21 and 24.0–24.12 (#496) (e8e0b00)
  • requires node.js >=20 & eslint >= 8.57.1 (#503) (1d6770e)

🩹 Fixes

  • Add explicit mapping for TypeScript extensions (#521) (1ad05c5)

... (truncated)

Commits
  • fc70bdf chore(master): release 18.1.0 (#528)
  • fd4f84e feat: Allow workspace root dependencies for no-extraneous-import (#536)
  • 5fde036 fix: Allow leading forwardslash in package.json "files" field (#534) (#535)
  • 63a90ef fix: no-extraneous-import for type-only @​types dependencies (#533)
  • 75fbe34 fix(prefer-promises/fs): add missing fs.promises APIs (cp, glob, lutimes, ope...
  • 058916a docs: Update online playground link in README
  • 9ef3c32 feat: support devEngines.runtime from package.json (#530)
  • c1b1b84 docs: fix usage in README.md
  • 4a6b76a chore(master): release 18.0.1 (#525)
  • 8906195 fix: Update TypeScript peer dependency version constraint
  • Additional commits viewable in compare view

Updates eslint-plugin-qunit from 8.2.5 to 8.2.6

Release notes

Sourced from eslint-plugin-qunit's releases.

Release 8.2.6

8.2.6 (2026-02-07)

Bug Fixes

  • add context.sourceCode fallback for ESLint 10 compatibility (#659) (937ddec)
  • switch to @​eslint-community/eslint-utils (#660) (6031514)
  • typo in peerDependencies in package.json (#658) (83cef82)

Documentation

Chores

Changelog

Sourced from eslint-plugin-qunit's changelog.

8.2.6 (2026-02-07)

Bug Fixes

  • add context.sourceCode fallback for ESLint 10 compatibility (#659) (937ddec)
  • switch to @​eslint-community/eslint-utils (#660) (6031514)
  • typo in peerDependencies in package.json (#658) (83cef82)

Documentation

Chores

Commits
  • 435cc11 Release 8.2.6
  • 1baf99c chore: lockfile diff (#664)
  • 4613e82 test: test under ESLint v10 (#663)
  • 6031514 fix: switch to @​eslint-community/eslint-utils (#660)
  • 937ddec fix: add context.sourceCode fallback for ESLint 10 compatibility (#659)
  • 83cef82 fix: typo in peerDependencies in package.json (#658)
  • 4824da6 upgrade: Bump lodash, @​release-it/conventional-changelog and release-it (#661)
  • 466a58f upgrade: Bump js-yaml (#662)
  • b97b193 upgrade: Bump actions/setup-node from 5 to 6 (#652)
  • 6480f69 upgrade: Bump eslint-config-prettier from 10.1.5 to 10.1.8 (#625)
  • Additional commits viewable in compare view

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Apr 26, 2026
@github-actions

github-actions Bot commented Apr 26, 2026

Copy link
Copy Markdown

Test Results

  1 files  ±0    1 suites  ±0   6m 4s ⏱️ - 3m 14s
716 tests ±0  653 ✅ ±0  63 💤 ±0  0 ❌ ±0 
731 runs  ±0  668 ✅ ±0  63 💤 ±0  0 ❌ ±0 

Results for commit 796e684. ± Comparison against base commit 0f74fce.

♻️ This comment has been updated with latest results.

@codecov

codecov Bot commented Apr 26, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ All tests successful. No failed tests found.

📢 Thoughts on this report? Let us know!

@codecov

codecov Bot commented Apr 26, 2026

Copy link
Copy Markdown

Bundle Report

Bundle size has no change ✅

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 2 potential issues.

Fix All in Cursor

Bugbot Autofix prepared fixes for both issues found in the latest run.

  • ✅ Fixed: Missing @babel/eslint-parser after transitive dependency removal
    • Added @babel/eslint-parser as a direct devDependency and regenerated the Bun lockfile so the ESLint config import resolves.
  • ✅ Fixed: eslint-plugin-import incompatible with ESLint 10 peer dependency
    • Pinned eslint and @eslint/js to ESLint 9.39.4, which is within eslint-plugin-import's supported peer range.

Create PR

Or push these changes by commenting:

@cursor push bceb1442b5
Preview (bceb1442b5)
diff --git a/app/mirage/handlers/institution-membership-grant-applications.js b/app/mirage/handlers/institution-membership-grant-applications.js
--- a/app/mirage/handlers/institution-membership-grant-applications.js
+++ b/app/mirage/handlers/institution-membership-grant-applications.js
@@ -2,7 +2,6 @@
   server.post('/institution-membership-grant-applications', function (schema) {
     const attrs = this.normalizedRequestAttrs();
 
-    // eslint-disable-next-line ember/no-array-prototype-extensions
     const approvedApplication = schema.institutionMembershipGrantApplications.findBy({
       normalizedEmailAddress: attrs.normalizedEmailAddress,
       institutionId: attrs.institutionId,

diff --git a/app/mirage/scenarios/test.js b/app/mirage/scenarios/test.js
--- a/app/mirage/scenarios/test.js
+++ b/app/mirage/scenarios/test.js
@@ -43,7 +43,6 @@
     createCourseFromData(server, courseToDataMap[courseSlug]);
   });
 
-  // eslint-disable-next-line ember/no-array-prototype-extensions
   const redis = server.schema.courses.findBy({ slug: 'redis' });
 
   // TODO: Do this for all courses?

diff --git a/app/mirage/utils/create-course-extension-ideas.js b/app/mirage/utils/create-course-extension-ideas.js
--- a/app/mirage/utils/create-course-extension-ideas.js
+++ b/app/mirage/utils/create-course-extension-ideas.js
@@ -5,7 +5,6 @@
     const isReleased = courseExtensionIdeaData.development_status === 'released';
 
     server.create('course-extension-idea', {
-      // eslint-disable-next-line ember/no-array-prototype-extensions
       course: server.schema.courses.findBy({ slug: courseExtensionIdeaData.course_slug }),
       createdAt: new Date(),
       descriptionMarkdown: courseExtensionIdeaData.description_md,

diff --git a/app/mirage/utils/create-course-from-data.js b/app/mirage/utils/create-course-from-data.js
--- a/app/mirage/utils/create-course-from-data.js
+++ b/app/mirage/utils/create-course-from-data.js
@@ -52,7 +52,6 @@
   const languageConfigurations = [];
 
   for (const languageConfigurationData of courseData.languages) {
-    // eslint-disable-next-line ember/no-array-prototype-extensions
     const language = server.schema.languages.findBy({ slug: languageConfigurationData.slug });
 
     if (!language) {

diff --git a/app/mirage/utils/create-course-stage-solution.js b/app/mirage/utils/create-course-stage-solution.js
--- a/app/mirage/utils/create-course-stage-solution.js
+++ b/app/mirage/utils/create-course-stage-solution.js
@@ -1,6 +1,6 @@
 export default function createCourseStageSolution(server, course, stagePosition, language) {
   let stage = course.stages.models.filter((stage) => stage.position === stagePosition)[0];
-  // eslint-disable-next-line ember/no-array-prototype-extensions
+
   language = language || server.schema.languages.findBy({ slug: 'go' });
 
   return server.create('course-stage-solution', {

diff --git a/app/mirage/utils/create-language-leaderboard-entries.js b/app/mirage/utils/create-language-leaderboard-entries.js
--- a/app/mirage/utils/create-language-leaderboard-entries.js
+++ b/app/mirage/utils/create-language-leaderboard-entries.js
@@ -1,13 +1,11 @@
 function findOrCreateUser(server, username, attrs = {}) {
   return (
-    // eslint-disable-next-line ember/no-array-prototype-extensions
     server.schema.users.findBy({ username }) ||
     server.create('user', { username, githubUsername: username, avatarUrl: `https://github.com/${username}.png`, createdAt: new Date(), ...attrs })
   );
 }
 
 export default function createLanguageLeaderboardEntries(server, languageSlug) {
-  // eslint-disable-next-line ember/no-array-prototype-extensions
   const language = server.schema.languages.findBy({ slug: languageSlug });
   const leaderboard = language.leaderboard || server.create('leaderboard', { language });
 

diff --git a/app/mirage/utils/create-leaderboard-entries.js b/app/mirage/utils/create-leaderboard-entries.js
--- a/app/mirage/utils/create-leaderboard-entries.js
+++ b/app/mirage/utils/create-leaderboard-entries.js
@@ -1,7 +1,6 @@
 export default function createLeaderboardEntries(server, languageSlug, courseSlug) {
-  // eslint-disable-next-line ember/no-array-prototype-extensions
   let language = server.schema.languages.findBy({ slug: languageSlug });
-  // eslint-disable-next-line ember/no-array-prototype-extensions
+
   let course = server.schema.courses.findBy({ slug: courseSlug });
 
   let user1 = server.create('user', {

diff --git a/bun.lock b/bun.lock
--- a/bun.lock
+++ b/bun.lock
@@ -29,6 +29,7 @@
       },
       "devDependencies": {
         "@babel/core": "^7.28.6",
+        "@babel/eslint-parser": "^7.28.6",
         "@babel/plugin-proposal-decorators": "^7.28.6",
         "@codecov/webpack-plugin": "^1.9.1",
         "@codemirror/language-data": "^6.5.2",
@@ -44,7 +45,7 @@
         "@embroider/macros": "^1.17.2",
         "@embroider/router": "^2.1.8",
         "@embroider/webpack": "^4.1.0",
-        "@eslint/js": "^10.0.1",
+        "@eslint/js": "^9.39.4",
         "@exercism/codemirror-lang-gleam": "^2.0.1",
         "@glimmer/component": "^2.0.0",
         "@glimmer/tracking": "^1.1.2",
@@ -164,7 +165,7 @@
         "ember-tooltips": "^4.0.0",
         "ember-truth-helpers": "^5.0.0",
         "ember-window-mock": "^1.0.2",
-        "eslint": "^10.3.0",
+        "eslint": "^9.39.4",
         "eslint-config-prettier": "^10.1.8",
         "eslint-plugin-ember": "^13.2.1",
         "eslint-plugin-import": "^2.32.0",
@@ -222,6 +223,8 @@
 
     "@babel/core": ["@babel/core@7.28.6", "", { "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/generator": "^7.28.6", "@babel/helper-compilation-targets": "^7.28.6", "@babel/helper-module-transforms": "^7.28.6", "@babel/helpers": "^7.28.6", "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6", "@jridgewell/remapping": "^2.3.5", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-H3mcG6ZDLTlYfaSNi0iOKkigqMFvkTKlGUYlD8GW7nNOYRrevuA46iTypPyv+06V3fEmvvazfntkBU34L0azAw=="],
 
+    "@babel/eslint-parser": ["@babel/eslint-parser@7.28.6", "", { "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", "semver": "^6.3.1" }, "peerDependencies": { "@babel/core": "^7.11.0", "eslint": "^7.5.0 || ^8.0.0 || ^9.0.0" } }, "sha512-QGmsKi2PBO/MHSQk+AAgA9R6OHQr+VqnniFE0eMWZcVcfBZoA2dKn2hUsl3Csg/Plt9opRUWdY7//VXsrIlEiA=="],
+
     "@babel/generator": ["@babel/generator@7.28.6", "", { "dependencies": { "@babel/parser": "^7.28.6", "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" } }, "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw=="],
 
     "@babel/helper-annotate-as-pure": ["@babel/helper-annotate-as-pure@7.27.3", "", { "dependencies": { "@babel/types": "^7.27.3" } }, "sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg=="],
@@ -614,18 +617,20 @@
 
     "@eslint-community/regexpp": ["@eslint-community/regexpp@4.12.2", "", {}, "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew=="],
 
-    "@eslint/config-array": ["@eslint/config-array@0.23.5", "", { "dependencies": { "@eslint/object-schema": "^3.0.5", "debug": "^4.3.1", "minimatch": "^10.2.4" } }, "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA=="],
+    "@eslint/config-array": ["@eslint/config-array@0.21.2", "", { "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.5" } }, "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw=="],
 
-    "@eslint/config-helpers": ["@eslint/config-helpers@0.5.5", "", { "dependencies": { "@eslint/core": "^1.2.1" } }, "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w=="],
+    "@eslint/config-helpers": ["@eslint/config-helpers@0.4.2", "", { "dependencies": { "@eslint/core": "^0.17.0" } }, "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw=="],
 
-    "@eslint/core": ["@eslint/core@1.2.1", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ=="],
+    "@eslint/core": ["@eslint/core@0.17.0", "", { "dependencies": { "@types/json-schema": "^7.0.15" } }, "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ=="],
 
-    "@eslint/js": ["@eslint/js@10.0.1", "", { "peerDependencies": { "eslint": "^10.0.0" }, "optionalPeers": ["eslint"] }, "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA=="],
+    "@eslint/eslintrc": ["@eslint/eslintrc@3.3.5", "", { "dependencies": { "ajv": "^6.14.0", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", "minimatch": "^3.1.5", "strip-json-comments": "^3.1.1" } }, "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg=="],
 
-    "@eslint/object-schema": ["@eslint/object-schema@3.0.5", "", {}, "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw=="],
+    "@eslint/js": ["@eslint/js@9.39.4", "", {}, "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw=="],
 
-    "@eslint/plugin-kit": ["@eslint/plugin-kit@0.7.1", "", { "dependencies": { "@eslint/core": "^1.2.1", "levn": "^0.4.1" } }, "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ=="],
+    "@eslint/object-schema": ["@eslint/object-schema@2.1.7", "", {}, "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA=="],
 
+    "@eslint/plugin-kit": ["@eslint/plugin-kit@0.4.1", "", { "dependencies": { "@eslint/core": "^0.17.0", "levn": "^0.4.1" } }, "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA=="],
+
     "@exercism/codemirror-lang-gleam": ["@exercism/codemirror-lang-gleam@2.0.1", "", { "dependencies": { "@codemirror/autocomplete": "^6.15.0", "@codemirror/language": "^6.10.1", "@lezer/highlight": "^1.2.0", "@lezer/lr": "^1.4.0" } }, "sha512-vl4wJ7ayMb71PBJKkA8dQev0KLTWazTIKs/zM3xQWaBQhGu9loyca9nQqpfmWAyxvkph0X/a8AJBF5C6w/8EGw=="],
 
     "@fastify/busboy": ["@fastify/busboy@2.1.1", "", {}, "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="],
@@ -766,6 +771,8 @@
 
     "@napi-rs/wasm-runtime": ["@napi-rs/wasm-runtime@1.1.1", "", { "dependencies": { "@emnapi/core": "^1.7.1", "@emnapi/runtime": "^1.7.1", "@tybys/wasm-util": "^0.10.1" } }, "sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A=="],
 
+    "@nicolo-ribaudo/eslint-scope-5-internals": ["@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1", "", { "dependencies": { "eslint-scope": "5.1.1" } }, "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg=="],
+
     "@nodelib/fs.scandir": ["@nodelib/fs.scandir@2.1.5", "", { "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" } }, "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g=="],
 
     "@nodelib/fs.stat": ["@nodelib/fs.stat@1.1.3", "", {}, "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw=="],
@@ -2082,7 +2089,7 @@
 
     "escodegen": ["escodegen@2.1.0", "", { "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2" }, "optionalDependencies": { "source-map": "~0.6.1" }, "bin": { "escodegen": "bin/escodegen.js", "esgenerate": "bin/esgenerate.js" } }, "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w=="],
 
-    "eslint": ["eslint@10.3.0", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", "@eslint/config-array": "^0.23.5", "@eslint/config-helpers": "^0.5.5", "@eslint/core": "^1.2.1", "@eslint/plugin-kit": "^0.7.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^9.1.2", "eslint-visitor-keys": "^5.0.1", "espree": "^11.2.0", "esquery": "^1.7.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "minimatch": "^10.2.4", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw=="],
+    "eslint": ["eslint@9.39.4", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", "@eslint/config-array": "^0.21.2", "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.5", "@eslint/js": "9.39.4", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "ajv": "^6.14.0", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", "eslint-scope": "^8.4.0", "eslint-visitor-keys": "^4.2.1", "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", "file-entry-cache": "^8.0.0", "find-up": "^5.0.0", "glob-parent": "^6.0.2", "ignore": "^5.2.0", "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", "lodash.merge": "^4.6.2", "minimatch": "^3.1.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, "peerDependencies": { "jiti": "*" }, "optionalPeers": ["jiti"], "bin": { "eslint": "bin/eslint.js" } }, "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ=="],
 
     "eslint-compat-utils": ["eslint-compat-utils@0.5.1", "", { "dependencies": { "semver": "^7.5.4" }, "peerDependencies": { "eslint": ">=6.0.0" } }, "sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q=="],
 
@@ -2102,11 +2109,11 @@
 
     "eslint-plugin-qunit": ["eslint-plugin-qunit@8.2.6", "", { "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "requireindex": "^1.2.0" }, "peerDependencies": { "eslint": ">=8.38.0" } }, "sha512-S1jC/DIW9J8VtNX4uG1vlf5FZVrfQFlcuiYmvTHR2IICUhubHqpWA5o+qS1tujh+81Gs39omKV2D4OXfbSJE5g=="],
 
-    "eslint-scope": ["eslint-scope@9.1.2", "", { "dependencies": { "@types/esrecurse": "^4.3.1", "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ=="],
+    "eslint-scope": ["eslint-scope@8.4.0", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg=="],
 
     "eslint-utils": ["eslint-utils@3.0.0", "", { "dependencies": { "eslint-visitor-keys": "^2.0.0" }, "peerDependencies": { "eslint": ">=5" } }, "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA=="],
 
-    "eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="],
+    "eslint-visitor-keys": ["eslint-visitor-keys@2.1.0", "", {}, "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="],
 
     "esm": ["esm@3.2.25", "", {}, "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA=="],
 
@@ -3380,6 +3387,8 @@
 
     "strip-final-newline": ["strip-final-newline@2.0.0", "", {}, "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA=="],
 
+    "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="],
+
     "style-loader": ["style-loader@2.0.0", "", { "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" }, "peerDependencies": { "webpack": "^4.0.0 || ^5.0.0" } }, "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ=="],
 
     "style-mod": ["style-mod@4.1.3", "", {}, "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ=="],
@@ -4062,8 +4071,12 @@
 
     "@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
 
-    "@eslint/config-array/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="],
+    "@eslint/config-array/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="],
 
+    "@eslint/eslintrc/globals": ["globals@14.0.0", "", {}, "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ=="],
+
+    "@eslint/eslintrc/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="],
+
     "@glimmer/compiler/@glimmer/syntax": ["@glimmer/syntax@0.94.9", "", { "dependencies": { "@glimmer/interfaces": "0.94.6", "@glimmer/util": "0.94.8", "@glimmer/wire-format": "0.94.8", "@handlebars/parser": "~2.0.0", "simple-html-tokenizer": "^0.5.11" } }, "sha512-OBw8DqMzKO4LX4kJBhwfTUqtpbd7O9amQXNTfb1aS7pufio5Vu5Qi6mRTfdFj6RyJ//aSI/l0kxWt6beYW0Apg=="],
 
     "@glimmer/component/@embroider/addon-shim": ["@embroider/addon-shim@1.10.0", "", { "dependencies": { "@embroider/shared-internals": "^3.0.0", "broccoli-funnel": "^3.0.8", "common-ancestor-path": "^1.0.1", "semver": "^7.3.8" } }, "sha512-gcJuHiXgnrzaU8NyU+2bMbtS6PNOr5v5B8OXBqaBvTCsMpXLvKo8OBOQFCoUN0rPX2J6VaFqrbi/371sMvzZug=="],
@@ -4102,6 +4115,8 @@
 
     "@mrmlnc/readdir-enhanced/glob-to-regexp": ["glob-to-regexp@0.3.0", "", {}, "sha512-Iozmtbqv0noj0uDDqoL0zNq0VBEfK2YFoMAZoxJe4cwphvLR+JskfF30QhXHOR4m3KrE6NLRYw+U9MRXvifyig=="],
 
+    "@nicolo-ribaudo/eslint-scope-5-internals/eslint-scope": ["eslint-scope@5.1.1", "", { "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" } }, "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw=="],
+
     "@nodelib/fs.scandir/@nodelib/fs.stat": ["@nodelib/fs.stat@2.0.5", "", {}, "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A=="],
 
     "@octokit/plugin-paginate-rest/@octokit/types": ["@octokit/types@12.6.0", "", { "dependencies": { "@octokit/openapi-types": "^20.0.0" } }, "sha512-1rhSOfRa6H9w4YwK0yrf5faDaDTb+yLyBUKOCV4xtCDB5VmIPqd/v9yr9o6SAzOAlRxMiRiCic6JVM1/kunVkw=="],
@@ -4156,6 +4171,8 @@
 
     "@sinonjs/samsam/type-detect": ["type-detect@4.1.0", "", {}, "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw=="],
 
+    "@stylistic/eslint-plugin/eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="],
+
     "@tailwindcss/node/magic-string": ["magic-string@0.30.21", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ=="],
 
     "@tailwindcss/node/tailwindcss": ["tailwindcss@4.2.1", "", {}, "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw=="],
@@ -4224,6 +4241,8 @@
 
     "@typescript-eslint/visitor-keys/@typescript-eslint/types": ["@typescript-eslint/types@8.55.0", "", {}, "sha512-ujT0Je8GI5BJWi+/mMoR0wxwVEQaxM+pi30xuMiJETlX80OPovb2p9E8ss87gnSVtYXtJoU9U1Cowcr6w2FE0w=="],
 
+    "@typescript-eslint/visitor-keys/eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="],
+
     "@warp-drive/build-config/@embroider/addon-shim": ["@embroider/addon-shim@1.10.0", "", { "dependencies": { "@embroider/shared-internals": "^3.0.0", "broccoli-funnel": "^3.0.8", "common-ancestor-path": "^1.0.1", "semver": "^7.3.8" } }, "sha512-gcJuHiXgnrzaU8NyU+2bMbtS6PNOr5v5B8OXBqaBvTCsMpXLvKo8OBOQFCoUN0rPX2J6VaFqrbi/371sMvzZug=="],
 
     "@warp-drive/build-config/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
@@ -4594,6 +4613,8 @@
 
     "ember-eslint-parser/content-tag": ["content-tag@4.2.0", "", {}, "sha512-f/o+F3qSa4gg23I7RWy6cMDxP2nPo99YWusxw2bjne7ZC6Acqqf4uB/+87AekOq1ehTocHH7b7nMd2X4S3NHVw=="],
 
+    "ember-eslint-parser/eslint-scope": ["eslint-scope@9.1.2", "", { "dependencies": { "@types/esrecurse": "^4.3.1", "@types/estree": "^1.0.8", "esrecurse": "^4.3.0", "estraverse": "^5.2.0" } }, "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ=="],
+
     "ember-eslint-parser/html-tags": ["html-tags@5.1.0", "", {}, "sha512-n6l5uca7/y5joxZ3LUePhzmBFUJ+U2YWzhMa8XUTecSeSlQiZdF5XAd/Q3/WUl0VsXgUwWi8I7CNIwdI5WN1SQ=="],
 
     "ember-estree/@glimmer/syntax": ["@glimmer/syntax@0.95.0", "", { "dependencies": { "@glimmer/interfaces": "0.94.6", "@glimmer/util": "0.94.8", "@glimmer/wire-format": "0.94.8", "@handlebars/parser": "~2.2.0", "simple-html-tokenizer": "^0.5.11" } }, "sha512-W/PHdODnpONsXjbbdY9nedgIHpglMfOzncf/moLVrKIcCfeQhw2vG07Rs/YW8KeJCgJRCLkQsi+Ix7XvrurGAg=="],
@@ -4714,13 +4735,11 @@
 
     "escodegen/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="],
 
-    "eslint/eslint-visitor-keys": ["eslint-visitor-keys@5.0.1", "", {}, "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA=="],
+    "eslint/eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="],
 
-    "eslint/espree": ["espree@11.2.0", "", { "dependencies": { "acorn": "^8.16.0", "acorn-jsx": "^5.3.2", "eslint-visitor-keys": "^5.0.1" } }, "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw=="],
-
     "eslint/fast-deep-equal": ["fast-deep-equal@3.1.3", "", {}, "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q=="],
 
-    "eslint/minimatch": ["minimatch@10.2.5", "", { "dependencies": { "brace-expansion": "^5.0.5" } }, "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg=="],
+    "eslint/minimatch": ["minimatch@3.1.5", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w=="],
 
     "eslint-compat-utils/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
 
@@ -4736,7 +4755,7 @@
 
     "eslint-plugin-n/semver": ["semver@7.8.0", "", { "bin": { "semver": "bin/semver.js" } }, "sha512-AcM7dV/5ul4EekoQ29Agm5vri8JNqRyj39o0qpX6vDF2GZrtutZl5RwgD1XnZjiTAfncsJhMI48QQH3sN87YNA=="],
 
-    "eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@2.1.0", "", {}, "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw=="],
+    "espree/eslint-visitor-keys": ["eslint-visitor-keys@4.2.1", "", {}, "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ=="],
 
     "expand-brackets/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="],
 
@@ -5454,8 +5473,6 @@
 
     "@embroider/webpack/@babel/core/semver": ["semver@6.3.1", "", { "bin": "bin/semver.js" }, "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="],
 
-    "@eslint/config-array/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="],
-
     "@glimmer/component/@embroider/addon-shim/@embroider/shared-internals": ["@embroider/shared-internals@3.0.2", "", { "dependencies": { "babel-import-util": "^3.0.1", "debug": "^4.3.2", "ember-rfc176-data": "^0.3.17", "fs-extra": "^9.1.0", "is-subdir": "^1.2.0", "js-string-escape": "^1.0.1", "lodash": "^4.17.21", "minimatch": "^3.0.4", "pkg-entry-points": "^1.1.1", "resolve-package-path": "^4.0.1", "resolve.exports": "^2.0.2", "semver": "^7.3.5", "typescript-memoize": "^1.0.1" } }, "sha512-/SusdG+zgosc3t+9sPFVKSFOYyiSgLfXOT6lYNWoG1YtnhWDxlK4S8leZ0jhcVjemdaHln5rTyxCnq8oFLxqpQ=="],
 
     "@glimmer/component/@embroider/addon-shim/semver": ["semver@7.7.3", "", { "bin": "bin/semver.js" }, "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q=="],
@@ -5470,6 +5487,8 @@
 
     "@istanbuljs/load-nyc-config/js-yaml/argparse": ["argparse@1.0.10", "", { "dependencies": { "sprintf-js": "~1.0.2" } }, "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg=="],
 
+    "@nicolo-ribaudo/eslint-scope-5-internals/eslint-scope/estraverse": ["estraverse@4.3.0", "", {}, "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw=="],
+
     "@octokit/plugin-paginate-rest/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@20.0.0", "", {}, "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA=="],
 
     "@octokit/plugin-rest-endpoint-methods/@octokit/types/@octokit/openapi-types": ["@octokit/openapi-types@20.0.0", "", {}, "sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA=="],
@@ -6562,10 +6581,6 @@
 
     "eslint-plugin-es-x/@eslint-community/eslint-utils/eslint-visitor-keys": ["eslint-visitor-keys@3.4.3", "", {}, "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag=="],
 
-    "eslint/espree/acorn": ["acorn@8.16.0", "", { "bin": { "acorn": "bin/acorn" } }, "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw=="],
-
-    "eslint/minimatch/brace-expansion": ["brace-expansion@5.0.6", "", { "dependencies": { "balanced-match": "^4.0.2" } }, "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g=="],
-
     "expand-brackets/debug/ms": ["ms@2.0.0", "", {}, "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A=="],
 
     "expand-brackets/define-property/is-descriptor": ["is-descriptor@0.1.7", "", { "dependencies": { "is-accessor-descriptor": "^1.0.1", "is-data-descriptor": "^1.0.1" } }, "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg=="],
@@ -7352,8 +7367,6 @@
 
     "@embroider/webpack/@babel/core/@babel/helper-module-transforms/@babel/helper-module-imports": ["@babel/helper-module-imports@7.27.1", "", { "dependencies": { "@babel/traverse": "^7.27.1", "@babel/types": "^7.27.1" } }, "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w=="],
 
-    "@eslint/config-array/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
-
     "@glimmer/component/@embroider/addon-shim/@embroider/shared-internals/babel-import-util": ["babel-import-util@3.0.1", "", {}, "sha512-2copPaWQFUrzooJVIVZA/Oppx/S/KOoZ4Uhr+XWEQDMZ8Rvq/0SNQpbdIyMBJ8IELWt10dewuJw+tX4XjOo7Rg=="],
 
     "@istanbuljs/load-nyc-config/find-up/locate-path/p-locate": ["p-locate@4.1.0", "", { "dependencies": { "p-limit": "^2.2.0" } }, "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A=="],
@@ -8772,8 +8785,6 @@
 
     "ember-window-mock/@embroider/addon-shim/@embroider/shared-internals/babel-import-util": ["babel-import-util@3.0.1", "", {}, "sha512-2copPaWQFUrzooJVIVZA/Oppx/S/KOoZ4Uhr+XWEQDMZ8Rvq/0SNQpbdIyMBJ8IELWt10dewuJw+tX4XjOo7Rg=="],
 
-    "eslint/minimatch/brace-expansion/balanced-match": ["balanced-match@4.0.4", "", {}, "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA=="],
-
     "fast-glob/micromatch/braces/extend-shallow": ["extend-shallow@2.0.1", "", { "dependencies": { "is-extendable": "^0.1.0" } }, "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug=="],
 
     "fast-glob/micromatch/braces/fill-range": ["fill-range@4.0.0", "", { "dependencies": { "extend-shallow": "^2.0.1", "is-number": "^3.0.0", "repeat-string": "^1.6.1", "to-regex-range": "^2.1.0" } }, "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ=="],

diff --git a/package.json b/package.json
--- a/package.json
+++ b/package.json
@@ -37,6 +37,7 @@
   },
   "devDependencies": {
     "@babel/core": "^7.28.6",
+    "@babel/eslint-parser": "^7.28.6",
     "@babel/plugin-proposal-decorators": "^7.28.6",
     "@codecov/webpack-plugin": "^1.9.1",
     "@codemirror/language-data": "^6.5.2",
@@ -52,7 +53,7 @@
     "@embroider/macros": "^1.17.2",
     "@embroider/router": "^2.1.8",
     "@embroider/webpack": "^4.1.0",
-    "@eslint/js": "^10.0.1",
+    "@eslint/js": "^9.39.4",
     "@exercism/codemirror-lang-gleam": "^2.0.1",
     "@glimmer/component": "^2.0.0",
     "@glimmer/tracking": "^1.1.2",
@@ -172,7 +173,7 @@
     "ember-tooltips": "^4.0.0",
     "ember-truth-helpers": "^5.0.0",
     "ember-window-mock": "^1.0.2",
-    "eslint": "^10.3.0",
+    "eslint": "^9.39.4",
     "eslint-config-prettier": "^10.1.8",
     "eslint-plugin-ember": "^13.2.1",
     "eslint-plugin-import": "^2.32.0",

You can send follow-ups to the cloud agent here.

Reviewed by Cursor Bugbot for commit 6c2ea2b. Configure here.

Comment thread package.json Outdated
"eslint": "^10.3.0",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-ember": "^12.7.5",
"eslint-plugin-ember": "^13.2.1",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing @babel/eslint-parser after transitive dependency removal

High Severity

Bumping eslint-plugin-ember to v13 updates ember-eslint-parser from 0.5.11 to 0.11.3. The old version had @babel/eslint-parser as a direct dependency; the new version makes it an optional peer dependency. This means @babel/eslint-parser is no longer installed. However, eslint.config.mjs still imports it at line 27 (import babelParser from '@babel/eslint-parser') and uses it at line 132 as the parser for .js files. ESLint will crash on startup with a module-not-found error. The package needs to be added as a direct devDependency in package.json.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 6c2ea2b. Configure here.

Comment thread package.json Outdated
"ember-truth-helpers": "^5.0.0",
"ember-window-mock": "^1.0.2",
"eslint": "^9.39.2",
"eslint": "^10.3.0",

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

eslint-plugin-import incompatible with ESLint 10 peer dependency

Medium Severity

eslint is bumped to ^10.3.0, but eslint-plugin-import@2.32.0 declares a peer dependency of eslint: "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" — ESLint 10 is not included. This peer dependency mismatch may cause installation warnings or runtime incompatibilities, as ESLint 10 removed several APIs that eslint-plugin-import relied on (e.g., FileEnumerator, context.parserOptions).

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 6c2ea2b. Configure here.

Bumps the eslint group with 4 updates in the / directory: [eslint](https://github.com/eslint/eslint), [eslint-plugin-ember](https://github.com/ember-cli/eslint-plugin-ember), [eslint-plugin-n](https://github.com/eslint-community/eslint-plugin-n) and [eslint-plugin-qunit](https://github.com/platinumazure/eslint-plugin-qunit).


Updates `eslint` from 9.39.2 to 10.5.0
- [Release notes](https://github.com/eslint/eslint/releases)
- [Commits](eslint/eslint@v9.39.2...v10.5.0)

Updates `eslint-plugin-ember` from 12.7.5 to 13.3.2
- [Release notes](https://github.com/ember-cli/eslint-plugin-ember/releases)
- [Changelog](https://github.com/ember-cli/eslint-plugin-ember/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ember-cli/eslint-plugin-ember/commits/v13.3.2)

Updates `eslint-plugin-n` from 17.23.2 to 18.1.0
- [Release notes](https://github.com/eslint-community/eslint-plugin-n/releases)
- [Changelog](https://github.com/eslint-community/eslint-plugin-n/blob/master/CHANGELOG.md)
- [Commits](eslint-community/eslint-plugin-n@v17.23.2...v18.1.0)

Updates `eslint-plugin-qunit` from 8.2.5 to 8.2.6
- [Release notes](https://github.com/platinumazure/eslint-plugin-qunit/releases)
- [Changelog](https://github.com/qunitjs/eslint-plugin-qunit/blob/main/CHANGELOG.md)
- [Commits](qunitjs/eslint-plugin-qunit@v8.2.5...v8.2.6)

---
updated-dependencies:
- dependency-name: eslint
  dependency-version: 10.2.1
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
- dependency-name: eslint-plugin-ember
  dependency-version: 13.1.3
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: eslint
- dependency-name: eslint-plugin-n
  dependency-version: 17.24.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: eslint
- dependency-name: eslint-plugin-qunit
  dependency-version: 8.2.6
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: eslint
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot
dependabot Bot force-pushed the dependabot/bun/eslint-97682f8f0f branch from 3f9033c to 796e684 Compare June 21, 2026 13:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants