Skip to content

Conversation

@renovate
Copy link

@renovate renovate bot commented Jan 3, 2026

Note: This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
@typescript-eslint/eslint-plugin (source) ^6.1.0^8.0.0 age confidence
@typescript-eslint/parser (source) ^6.1.0^8.0.0 age confidence
css-loader ^6.7.1^7.0.0 age confidence
eslint (source) ^8.36.0^9.0.0 age confidence
eslint-config-prettier ^8.8.0^10.0.0 age confidence
jest (source) ^29.2.0^30.0.0 age confidence
mkdirp ^1.0.3^3.0.0 age confidence
npm-run-all2 ^7.0.1^8.0.0 age confidence
rimraf ^5.0.1^6.0.0 age confidence
source-map-loader ^1.0.2^5.0.0 age confidence
style-loader ^3.3.1^4.0.0 age confidence
stylelint (source) ^15.10.1^16.0.0 age confidence
stylelint-config-recommended ^13.0.0^17.0.0 age confidence
stylelint-config-standard ^34.0.0^39.0.0 age confidence
stylelint-prettier ^4.0.0^5.0.0 age confidence

Release Notes

typescript-eslint/typescript-eslint (@​typescript-eslint/eslint-plugin)

v8.52.0

Compare Source

🚀 Features
  • eslint-plugin-internal: [no-multiple-lines-of-errors] add rule (#​11899)
🩹 Fixes
  • eslint-plugin: [no-base-to-string] detect @​@​toPrimitive and valueOf (#​11901)
  • eslint-plugin: [no-useless-default-assignment] handle conditional initializer (#​11908)
❤️ Thank You
  • Josh Goldberg ✨
  • Ulrich Stark

You can read about our versioning strategy and releases on our website.

v8.51.0

Compare Source

🚀 Features
  • eslint-plugin: add namespace to plugin meta (#​11885)
  • eslint-plugin: [no-useless-default-assignment] fix some cases to optional syntax (#​11871)
🩹 Fixes
  • eslint-plugin: [prefer-optional-chain] handle MemberExpression in final chain position (#​11835)
  • eslint-plugin: bump ts-api-utils to 2.2.0 (#​11881)
  • eslint-plugin: remove fixable from no-dynamic-delete rule (#​11876)
  • eslint-plugin: fix crash and false positives in no-useless-default-assignment (#​11845)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.50.1

Compare Source

🩹 Fixes
  • eslint-plugin: [no-unnecessary-type-assertion] correct handling of undefined vs. void (#​11826)
  • eslint-plugin: [method-signature-style] ignore methods that return this (#​11813)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.50.0

Compare Source

🚀 Features
  • eslint-plugin: [no-useless-default-assignment] add rule (#​11720)
❤️ Thank You
  • Josh Goldberg ✨
  • Ulrich Stark

You can read about our versioning strategy and releases on our website.

v8.49.0

Compare Source

🚀 Features
  • eslint-plugin: use Intl.Segmenter instead of graphemer (#​11804)
🩹 Fixes
  • deps: update dependency prettier to v3.7.2 (#​11820)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.48.1

Compare Source

🩹 Fixes
  • eslint-plugin: [restrict-template-expressions] check base types in allow list (#​11764, #​11759)
  • eslint-plugin: honor ignored base types on generic classes (#​11767)
  • eslint-plugin: [consistent-type-exports] check value flag before resolving alias (#​11769)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.48.0

Compare Source

🚀 Features
  • eslint-plugin: [no-redundant-type-constituents] use assignability checking for redundancy checks (#​10744)
🩹 Fixes
  • typescript-estree: disallow binding patterns in parameter properties (#​11760)
  • eslint-plugin: [consistent-generic-constructors] ignore when constructor is typed array (#​10477)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.47.0

Compare Source

🚀 Features
  • eslint-plugin: [no-unused-private-class-members] new extension rule (#​10913)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.46.4

Compare Source

🩹 Fixes
  • parser: error when both projectService and project are set (#​11333)
  • eslint-plugin: handle override modifier in promise-function-async fixer (#​11730)
  • eslint-plugin: [no-deprecated] fix double-report on computed literal identifiers (#​11006, #​10958)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.46.3

Compare Source

🩹 Fixes
  • eslint-plugin: [no-duplicate-enum-values] support signed numbers (#​11722, #​11723)
  • eslint-plugin: [no-misused-promises] expand union type to retrieve target property (#​11706)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.46.2

Compare Source

🩹 Fixes
  • eslint-plugin: [prefer-optional-chain] skip optional chaining when it could change the result (#​11702)
❤️ Thank You
  • mdm317

You can read about our versioning strategy and releases on our website.

v8.46.1

Compare Source

🩹 Fixes
  • eslint-plugin: [no-misused-promises] special-case .finally not to report when a promise returning function is provided as an argument (#​11667)
  • eslint-plugin: [prefer-optional-chain] include mixed "nullish comparison style" chains in checks (#​11533)
❤️ Thank You
  • mdm317
  • Ronen Amiel

You can read about our versioning strategy and releases on our website.

v8.46.0

Compare Source

🚀 Features
  • eslint-plugin: [no-unsafe-member-access] add allowOptionalChaining option (#​11659)
  • rule-schema-to-typescript-types: clean up and make public (#​11633)
🩹 Fixes
  • eslint-plugin: [prefer-readonly-parameter-types] ignore tagged primitives (#​11660)
  • typescript-estree: forbid abstract method and accessor to have implementation (#​11657)
  • eslint-plugin: removed error type previously deprecated (#​11674)
  • eslint-plugin: [no-deprecated] ignore deprecated export imports (#​11603)
  • eslint-plugin: [unbound-method] improve wording around this: void and binding (#​11634)
  • rule-tester: deprecate TestCaseError#type and LintMessage#nodeType (#​11628)
  • eslint-plugin: [no-floating-promises] remove excess parentheses in suggestions (#​11487)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.45.0

Compare Source

🚀 Features
  • eslint-plugin: expose rule name via RuleModule interface (#​11616)
🩹 Fixes
  • eslint-plugin: [prefer-nullish-coalescing] ignoreBooleanCoercion should not apply to top-level ternary expressions (#​11614)
  • eslint-plugin: [no-base-to-string] check if superclass is ignored (#​11617)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.44.1

Compare Source

🩹 Fixes
  • eslint-plugin: [await-thenable] should not report passing values to promise aggregators which may be a promise in an array literal (#​11611)
  • eslint-plugin: [no-unsafe-enum-comparison] support unions of literals (#​11599)
  • eslint-plugin: [no-base-to-string] make ignoredTypeNames match type names without generics (#​11597)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.44.0

Compare Source

🚀 Features
  • eslint-plugin: [await-thenable] report invalid (non-promise) values passed to promise aggregator methods (#​11267)
🩹 Fixes
  • eslint-plugin: [no-unnecessary-type-conversion] ignore enum members (#​11490)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.43.0

Compare Source

🚀 Features
  • typescript-estree: disallow empty type parameter/argument lists (#​11563)
🩹 Fixes
  • eslint-plugin: [prefer-return-this-type] don't report an error when returning a union type that includes a classType (#​11432)
  • eslint-plugin: [no-deprecated] should report deprecated exports and reexports (#​11359)
  • eslint-plugin: [no-floating-promises] allowForKnownSafeCalls now supports function names (#​11423, #​11430)
  • eslint-plugin: [consistent-type-exports] fix declaration shadowing (#​11457)
  • eslint-plugin: [no-unnecessary-type-conversion] only report ~~ on integer literal types (#​11517)
  • scope-manager: exclude Program from DefinitionBase node types (#​11469)
  • eslint-plugin: [no-non-null-assertion] do not suggest optional chain on LHS of assignment (#​11489)
  • type-utils: add union type support to TypeOrValueSpecifier (#​11526)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.42.0

Compare Source

🩹 Fixes
  • deps: update eslint monorepo to v9.33.0 (#​11482)

You can read about our versioning strategy and releases on our website.

v8.41.0

Compare Source

🩹 Fixes
  • deps: update dependency prettier to v3.6.2 (#​11496)

You can read about our versioning strategy and releases on our website.

v8.40.0

Compare Source

🚀 Features
  • typescript-estree: forbid invalid keys in EnumMember (#​11232)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.39.1

Compare Source

This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.39.0

Compare Source

🚀 Features
  • eslint-plugin: [only-throw-error] support yield/await expressions (#​11417)
  • eslint-plugin: add no-unnecessary-type-conversion to strict-type-checked ruleset (#​11427)
  • update to TypeScript 5.9.2 (#​11445)
  • eslint-plugin: [naming-convention] add enumMember PascalCase default option (#​11127)
🩹 Fixes
  • eslint-plugin: [no-unsafe-assignment] add an unsafeObjectPattern message (#​11403)
  • eslint-plugin: [prefer-optional-chain] ignore check option for most RHS of a chain (#​11272)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.38.0

Compare Source

🩹 Fixes
  • disallow extra properties in rule options (#​11397)
  • eslint-plugin: [consistent-generic-constructors] resolve conflict with isolatedDeclarations if enabled in constructor option (#​11351)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.37.0

Compare Source

🩹 Fixes
  • eslint-plugin: [unified-signatures] fix false positives for ignoreOverloadsWithDifferentJSDoc option (#​11381)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.36.0

Compare Source

This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.35.1

Compare Source

🩹 Fixes
  • remove prettier from eslint-plugin (#​11339)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.35.0

Compare Source

🚀 Features
  • eslint-plugin: [no-base-to-string] add checkUnknown Option (#​11128)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.34.1

Compare Source

This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.34.0

Compare Source

🩹 Fixes
  • typescript-estree: add validation to interface extends (#​11271)
❤️ Thank You
  • Tao

You can read about our versioning strategy and releases on our website.

v8.33.1

Compare Source

🩹 Fixes
  • exclude docs/ directory from eslint-plugin package (#​11251)
❤️ Thank You
  • roottool

You can read about our versioning strategy and releases on our website.

v8.33.0

Compare Source

This was a version bump only for eslint-plugin to align it with other projects, there were no code changes.

You can read about our versioning strategy and releases on our website.

v8.32.1

Compare Source

🩹 Fixes
  • eslint-plugin: [consistent-indexed-object-style] check for indirect circular types in aliased mapped types (#​11177)
  • eslint-plugin: [consistent-indexed-object-style] adjust auto-fixer to generate valid syntax for TSMappedType with no type annotation (#​11180)
  • eslint-plugin: [no-deprecated] support computed member access (#​10867)
  • eslint-plugin: [no-unnecessary-type-conversion] shouldn't have fixable property (#​11194)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.32.0

Compare Source

🚀 Features
  • eslint-plugin: [only-throw-error] add option allowRethrowing (#​11075)
  • eslint-plugin: [no-unnecessary-type-conversion] add rule (#​10182)
🩹 Fixes
  • eslint-plugin: [prefer-nullish-coalescing] fix parenthesization bug in suggestion (#​11098)
  • eslint-plugin: [unified-signatures] exempt this from optional parameter overload check (#​11005)
  • eslint-plugin: [no-unnecessary-type-parameters] should parenthesize type in suggestion fixer if necessary (#​10907)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.31.1

Compare Source

🩹 Fixes
  • eslint-plugin: [no-unnecessary-condition] downgrade fix to suggestion (#​11081)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.31.0

Compare Source

🚀 Features
  • eslint-plugin: [no-unnecessary-type-assertion] add option to ignore string const assertions (#​10979)
❤️ Thank You
  • Nicolas Le Cam

You can read about our versioning strategy and releases on our website.

v8.30.1

Compare Source

🩹 Fixes
  • eslint-plugin: fix mistake with eslintrc config generation (#​11072)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.30.0

Compare Source

🚀 Features
  • eslint-plugin: [no-explicit-any] suggest to replace keyof any with PropertyKey (#​11032)
🩹 Fixes
  • eslint-plugin: [promise-function-async] use a different error message for functions with promise and non-promise types (#​10950)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.29.1

Compare Source

🩹 Fixes
  • eslint-plugin: [no-deprecated] report on deprecated imported variable used as property (#​10998)
❤️ Thank You
  • Ronen Amiel

You can read about our versioning strategy and releases on our website.

v8.29.0

Compare Source

🚀 Features
  • eslint-plugin: [prefer-nullish-coalescing] create ignoreIfStatements option (#​11000)
🩹 Fixes
  • eslint-plugin: [no-array-constructor] remove optional chaining exemption (#​10963)
  • eslint-plugin: support arbitrary extensions in definition files (#​10957)
  • eslint-plugin: [prefer-for-of] fix false positive when using erasable type syntax within update expressions (#​10981)
  • eslint-plugin: [use-unknown-in-catch-callback-variable] remove fixable property (#​10993)
  • eslint-plugin: [no-unnecessary-condition] don't report on unnecessary optional array index access when noUncheckedIndexedAccess is enabled (#​10961)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.28.0

Compare Source

🚀 Features
  • eslint-plugin: [prefer-nullish-coalescing] support if statement assignment (??=) and fix several minor bugs (#​10861)
🩹 Fixes
  • eslint-plugin: [no-unsafe-function-type] remove fixable property (#​10986)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.27.0

Compare Source

🚀 Features
  • utils: support DeprecatedInfo for rule.meta.deprecated (#​10932)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.26.1

Compare Source

🩹 Fixes
  • eslint-plugin: [no-unsafe-return] handle recursive type (#​10883)
  • eslint-plugin: [prefer-nullish-coalescing] treat any/unknown as eligible for nullish coalescing (#​10865)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.26.0

Compare Source

🚀 Features
  • eslint-plugin: [unified-signatures] support ignoring overload signatures with different JSDoc comments (#​10781)
  • eslint-plugin: [explicit-module-boundary-types] add an option to ignore overload implementations (#​10889)
  • eslint-plugin: [no-unused-var] handle implicit exports in declaration files (#​10714)
  • support TypeScript 5.8 (#​10903)
  • eslint-plugin: [no-unnecessary-type-parameters] special case tuples and parameter location arrays as single-use (#​9536)
🩹 Fixes
  • eslint-plugin: [no-unnecessary-type-assertion] handle unknown (#​10875)
  • eslint-plugin: [no-invalid-void-type] report accessor properties with an invalid void type (#​10864)
  • eslint-plugin: [unified-signatures] does not differentiate truly private methods (#​10806)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.25.0

Compare Source

🚀 Features
  • eslint-plugin: [no-misused-spread] add suggestions (#​10719)
🩹 Fixes
  • eslint-plugin: [prefer-nullish-coalescing] report on chain expressions in a ternary (#​10708)
  • eslint-plugin: [no-deprecated] report usage of deprecated private identifiers (#​10844)
  • eslint-plugin: [unified-signatures] handle getter-setter (#​10818)
❤️ Thank You

You can read about our versioning strategy and releases on our website.

v8.24.1

Compare Source

🩹 Fixes
  • eslint-plugin: [class-methods-use-this] check accessor methods with a function initializer (#​10796)
  • eslint-plugin: [no-misused-promises] don't report on static accessor properties (#​10814)
  • eslint-plugin: [no-deprecated] don't report on deprecated accessor property declaration (#​10813)
  • eslint-plugin: [explicit-member-accessibility] check accessor class properties for missing accessibility modifier (#​10805)
  • eslint-plugin: [explicit-module-boundary-types] check accessor class properties with a function initializer (#​10804)
  • eslint-plugin: [prefer-return-this-type] check accessor properties with a function initializer (#​10794)
  • eslint-plugin: [consistent-generic-constructors] check accessor class properties (#​10789)
  • eslint-plugin: [no-unsafe-assignment] report on an any value assigned as an initializer of an accessor property (#​10785)
  • eslint-plugin: [no-unnecessary-template-expression] ignore enum and enum members (#​10782)
  • eslint-plugin: [no-inferrable-types] handle accessor (#​10780)
❤️ Thank You
  • Ronen Amiel
  • YeonJuan

You can read about our versioning strategy and releases on our website.

v8.24.0

Compare Source

🚀 Features
  • eslint-plugin: [no-unnecessary-condition] make allowConstantLoopConditions more granular (#​10639)
🩹 Fixes
  • eslint-plugin: [no-misused-spread] correct and elaborate string spread report message (#​10751)
  • eslint-plugin: [restrict-plus-operands] report adding bigints to strings when allowNumberAndString is false (#​10737)
❤️ Thank You
  • Josh Goldberg ✨
  • noah
  • Ronen Amiel

You can read about our versioning strategy and releases on our website.

v8.23.0

Compare Source

🚀 Features
  • eslint-plugin: [no-unnecessary-boolean-literal-compare] enforce strictNullChecks (#​10712)
🩹 Fixes
  • eslint-plugin: [no-shadow] ignore declare variables in definition files shadowing global variables (#​10710)
  • eslint-plugin: [no-restricted-imports] support regex option (#​10699)

Configuration

📅 Schedule: Branch creation - "every weekend" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate bot added the renovate label Jan 3, 2026
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jan 3, 2026

📝 Walkthrough

Walkthrough

This pull request modifies package.json with no changes to exported or public entities. The specific modifications are minimal, resulting in a low code review effort.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main change: a bulk update of devDependencies with major version bumps across multiple packages.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.


Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

📜 Review details

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro

Disabled knowledge base sources:

  • Linear integration is disabled by default for public repositories

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 4eede54 and 7c04b17.

📒 Files selected for processing (1)
  • package.json

Comment on lines +81 to +85
"@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^8.0.0",
"css-loader": "^7.0.0",
"eslint": "^9.0.0",
"eslint-config-prettier": "^10.0.0",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🔴 Critical

🧩 Analysis chain

🏁 Script executed:

# First, let's look at the package.json file around the specified lines
head -n 110 package.json | tail -n 40

Repository: deepnote/jupyterlab-deepnote

Length of output: 1398


🏁 Script executed:

# Also check if there are configuration files for the tools mentioned
fd -e "\.eslintrc|\.stylelintrc|jest\.config" .

Repository: deepnote/jupyterlab-deepnote

Length of output: 54


🏁 Script executed:

# Check if there's a git history showing what changed
git log --oneline -n 1 -- package.json

Repository: deepnote/jupyterlab-deepnote

Length of output: 115


🏁 Script executed:

# Check git diff to see what the actual changes were
git diff HEAD~1 package.json | head -n 100

Repository: deepnote/jupyterlab-deepnote

Length of output: 258


🏁 Script executed:

# Check for configuration files for the tools mentioned
find . -maxdepth 2 -type f \( -name ".eslintrc*" -o -name "eslint.config.*" -o -name ".stylelintrc*" -o -name "jest.config.*" -o -name "prettier.config.*" \)

Repository: deepnote/jupyterlab-deepnote

Length of output: 88


🏁 Script executed:

# Check if package-lock.json or yarn.lock exists to see lock status
ls -la package-lock.json yarn.lock 2>&1 | head -5

Repository: deepnote/jupyterlab-deepnote

Length of output: 197


🏁 Script executed:

# Check what scripts are available in package.json
grep -A 20 '"scripts":' package.json

Repository: deepnote/jupyterlab-deepnote

Length of output: 1640


🏁 Script executed:

# Check the jest.config.js to see if it needs updates
cat jest.config.js

Repository: deepnote/jupyterlab-deepnote

Length of output: 861


🏁 Script executed:

# Search for eslint configuration
find . -maxdepth 2 -type f -name "eslint.config.*" -o -name ".eslintrc*"

Repository: deepnote/jupyterlab-deepnote

Length of output: 54


🏁 Script executed:

# Check for eslint configuration - ESLint 9 uses eslint.config.js or .eslintrc
find . -maxdepth 2 -type f \( -name "eslint.config.js" -o -name ".eslintrc.js" -o -name ".eslintrc.json" -o -name ".eslintrc" \)

Repository: deepnote/jupyterlab-deepnote

Length of output: 54


🏁 Script executed:

# Check if there's a stylelint config
find . -maxdepth 2 -type f \( -name ".stylelintrc*" -o -name "stylelint.config.*" \)

Repository: deepnote/jupyterlab-deepnote

Length of output: 54


🏁 Script executed:

# Check the full scripts section to see if test exists
grep -A 30 '"scripts":' package.json | grep test

Repository: deepnote/jupyterlab-deepnote

Length of output: 106


🏁 Script executed:

# Check if there are any references to ESLint legacy config
grep -r "eslintConfig" . --include="*.json" --include="*.js" 2>/dev/null | head -5

Repository: deepnote/jupyterlab-deepnote

Length of output: 108


🏁 Script executed:

# Check the actual versions in node_modules to understand the state
grep -A 2 '"eslint"' package.json
grep -A 2 '"jest"' package.json

Repository: deepnote/jupyterlab-deepnote

Length of output: 426


🏁 Script executed:

# Check what's in the eslintConfig section of package.json
sed -n '/"eslintConfig"/,/^    }/p' package.json

Repository: deepnote/jupyterlab-deepnote

Length of output: 1507


🏁 Script executed:

# Check if ESLint 9 is looking for eslint.config.js specifically
grep -i "flat\|config" package.json | head -10

Repository: deepnote/jupyterlab-deepnote

Length of output: 441


ESLint 9 incompatibility: Project uses legacy eslintConfig format but ESLint 9 requires flat config.

Major version bumps (ESLint 8→9, Jest 29→30, TypeScript ESLint 6→8, stylelint 15→16) include breaking changes. ESLint 9 specifically requires either an eslint.config.js file or explicit legacy config support—the current eslintConfig in package.json will not work.

Before merge, either:

  1. Migrate to ESLint 9 flat config format (add eslint.config.js)
  2. Downgrade ESLint to ^8.x
  3. Configure ESLint 9 to use legacy config explicitly

Also verify Jest 30 compatibility and run npm run lint:check and npm run test to confirm pipeline passes.

🤖 Prompt for AI Agents
package.json lines 81-85: current bump to "eslint": "^9.0.0" is incompatible
with the legacy eslintConfig in package.json; either migrate to ESLint 9 flat
config, pin ESLint to v8, or enable legacy config support. Fix by one of three
actions: (A) create an eslint.config.js at repo root implementing the flat
config equivalent of your existing package.json eslintConfig and update
package.json scripts if needed; (B) revert the eslint dependency to a caret
range compatible with v8 (e.g. "^8.x") in package.json to keep the existing
legacy config; or (C) explicitly configure ESLint 9 to load the legacy config
(add the compatibility package/flag recommended in ESLint docs) and verify
package.json still works. After applying one of these, update package.json
dependency versions accordingly and run npm run lint:check and npm run test to
ensure pipeline compatibility.

Comment on lines +81 to +82
"@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^8.0.0",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

@typescript-eslint 8.0 breaking changes ESLint compatibility

💡 Result:

Short answer — for @typescript-eslint v8 the important ESLint-compatibility changes are:

  • v8 adds full support for ESLint v9. [1]
  • The ESLint peer requirement was tightened (minimum changed around the v8 release; v8 requires ESLint ^8.57.0). [1][2]
  • Expect a few rule deprecations/renames and tooling/parser option changes (projectService, parserOptions behavior) tied to the upgrade; these are documented in the v8 release notes. [1]

Sources: [1] typescript-eslint v8 release notes; [2] ESLint v8 → v8.0.0 migration guide.


🌐 Web query:

@typescript-eslint version history v7 v8 releases

💡 Result:

Summary — @typescript-eslint v7 and v8 (major releases)

  • v7 (major): v7.0.0 released Feb 12, 2024 — introduced flat-config support and bumped peer requirements (Node/TypeScript/ESLint). [1][2]
  • v8 (major): v8 was announced (beta) in mid‑2024 and promoted to stable in the v8 blog post; v8 adds full ESLint v9 support and the stable "project service" (stable v8 rollout occurred around July 2024). [3][4]

Sources

  1. typescript-eslint v7.0.0 release notes (release entry). [GitHub / release summary]. [turn3search4]
  2. typescript-eslint releases / older-versions documentation (v7 docs link). [turn0search0]
  3. Announcing typescript-eslint v8 (blog — stable). [turn4search5]
  4. Announcing typescript-eslint v8 Beta / v8 planning & community references (planning / timeline and ecosystem updates, incl. July 31, 2024 milestone). [turn3search0][turn1search3]

If you want, I can list notable v7→v8 breaking changes and the exact upgrade steps for each @typescript-eslint package.


🌐 Web query:

@typescript-eslint 8.0 migration guide configuration changes

💡 Result:

Key config changes when migrating to @typescript-eslint v8

  • Package consolidation: v8 provides a combined package (typescript-eslint) that bundles the parser and plugin; you can uninstall separate @typescript-eslint/parser and @typescript-eslint/eslint-plugin and install the new package (or use the new @8 tag). [1][2]

  • Install command change (example): npm i typescript-eslint@8 --save-dev (or the release-candidate / rc tag during beta). [1][6]

  • Recommended configs reworked: v8 ships updated/reworked recommended configurations — update your extends to the new recommended configs and prefer them if you haven’t updated your lint config in a while. [1]

  • Flat config support / legacy configs: v8 supports ESLint’s flat config format; docs show both flat and legacy (.eslintrc) usage and recommend migrating where appropriate. If moving to flat config, follow ESLint’s config migration guide. [2][0]

  • Migration steps / action items:

    1. Replace separate packages with the v8 package (or update @typescript-eslint/* packages to ^8.x). [2]
    2. Update your ESLint config to use the v8 recommended rules (check typescript-eslint docs for exact extends names). [1]
    3. If you use typed rules, ensure parserOptions.project and file globs are still correct for type-aware linting. (See v8 getting-started / typed-linting docs for details.) [2]
    4. Run lint and fix new/changed rule outputs; consult the v8 release notes for rule-specific breaking changes. [1]

References
[1] typescript-eslint — “Announcing typescript-eslint v8” (upgrade notes, recommended configs).
[2] typescript-eslint packages / getting-started & config docs (migration, flat vs legacy config).


Update ESLint peer requirement and verify config compatibility with v8.

@typescript-eslint v8 requires ESLint ^8.57.0 (tightened from v6). Verify your ESLint version and update eslint config: recommended configs changed in v8, and if using type-aware linting, parserOptions.project may need adjustment. See typescript-eslint v8 migration guide.

🤖 Prompt for AI Agents
In package.json around lines 81-82, the pinned @typescript-eslint packages are
v8 but v8 requires ESLint >=8.57.0; update package.json to pin eslint to ^8.57.0
(or a compatible ^8.x >=8.57.0) and ensure related plugin/formatter versions are
compatible, then update your ESLint config to match typescript-eslint v8
migration: replace/adjust any deprecated recommended configs, confirm extends
uses the v8-recommended names, and if you use type-aware rules set
parserOptions.project to a correct tsconfig path or glob (and ensure project
files are included), run npm/yarn install and lint to verify no new rule errors
and fix config issues reported by ESLint.

"@typescript-eslint/eslint-plugin": "^8.0.0",
"@typescript-eslint/parser": "^8.0.0",
"css-loader": "^7.0.0",
"eslint": "^9.0.0",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

ESLint 9.0.0 breaking changes migration guide flat config

💡 Result:

Summary of the v9 flat-config / breaking-change items and quick migration steps

Key changes you need to know

  • Flat config (eslint.config.js) is now the default configuration format; eslintrc is deprecated (you can keep it by setting ES LINT_USE_FLAT_CONFIG=false). [1][2]
  • ESLint’s CLI behavior: with flat config, running eslint with no file patterns defaults to linting the current directory (equivalent to passing .); eslintrc users will get an error unless they pass --pass-on-no-patterns. [2]
  • "eslint:recommended" and "eslint:all" are not accepted in flat config. Translate those rules into flat config entries. [2]
  • The Linter and tooling expect flat config (FlatESLint → ESLint; Linter expects flat format). RuleTester (formerly FlatRuleTester) defaults changed (languageOptions defaults to latest/module). Update tests accordingly. [2]
  • Some rules, schemas, and CLI behaviors tightened (examples: unused-disable-directive warnings by default, stricter rule schemas, new defaults for certain rules). Review the full breaking-changes list. [1][2]

Minimal migration checklist

  1. Read the official migration guide and breaking-changes list. [2]
  2. Run the configuration migrator to convert .eslintrc* to a flat config (eslint.config.js). Follow the Configuration Migration Guide for translating keys (env, parser, parserOptions → languageOptions, plugins, overrides → files/ignores, etc.). [3]
  3. Replace uses of "eslint:recommended" / "eslint:all" with explicit rule entries in your flat config. [2]
  4. Update tests and rule authoring:
    • Use the new RuleTester (FlatRuleTester removed). Move parserOptions → languageOptions and set explicit ecmaVersion/sourceType if you relied on old defaults. [2]
    • Ensure rules declare meta.schema (function-style rules removed). [2]
  5. Adjust CI/CLI calls:
    • If you want the old behavior when no patterns passed, add --pass-on-no-patterns.
    • Consider --report-unused-disable-directives-severity or set linterOptions.reportUnusedDisableDirectives if you need old behavior for unused disables. [1][2]
  6. If you need to keep using eslintrc for now, set the env var ES LINT_USE_FLAT_CONFIG=false (temporary). Plan to migrate because eslintrc is deprecated. [1][2]

References

  • ESLint v9.0.0 release notes (breaking changes, flat config default). [1]
  • Migrate to v9.x (detailed breaking changes & guidance). [2]
  • Configuration Migration Guide (how to convert eslintrc → flat config and key translations). [3]

Would you like me to run the config migrator on a sample .eslintrc file you paste here and produce an eslint.config.js for you?


🏁 Script executed:

# Read the package.json file, specifically around lines 142-184 to see the eslintConfig
head -n 190 package.json | tail -n 60 | cat -n

Repository: deepnote/jupyterlab-deepnote

Length of output: 2275


Migrate eslintConfig to flat config format.

ESLint v9 defaults to flat config; your eslintConfig uses the deprecated eslintrc format. Migrate package.json lines 142–184 to eslint.config.js. Specifically, "eslint:recommended" (line 14) is not accepted in flat config and must be replaced with explicit rules. See the ESLint migration guide.

"eslint-plugin-prettier": "^5.0.0",
"husky": "9.1.7",
"jest": "^29.2.0",
"jest": "^30.0.0",
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

Jest 30.0 breaking changes migration guide

💡 Result:

Here are the key breaking changes in Jest 30 and concise migration steps.

Quick install

  • npm install jest@^30.0.0. [1]

Major breaking changes (summary)

  • Dropped Node support: 14, 16, 19, 21 — run on a supported Node version (>=18/20 family as appropriate). [1][3]
  • TypeScript: minimum supported TS is 5.4 — upgrade your toolchain if needed. [1]
  • jsdom: jest-environment-jsdom upgraded (jsdom 21 → 26) — update any jsdom-specific expectations. [1]
  • Removed expect alias matchers — replace aliases with canonical names (there are autofixers in eslint-plugin-jest / Nx migrations). [1][6]
  • Asymmetric matcher behavior changed: objectContaining no longer matches arrays or non‑enumerable props; use arrayContaining, ArrayOf, or direct array asserts and adjust length checks. [2][4]
  • Non-enumerable object properties excluded from object matchers by default — adjust tests that relied on those. [1][2]
  • Snapshot printing changed — you may need to update snapshots. [1]
  • CLI/config rename: --testPathPattern → --testPathPatterns; globalsCleanupMode renamed to globalsCleanup; waitNextEventLoopTurnForUnhandledRejectionEvents → --waitForUnhandledRejections. [3]
  • .mts/.cts are supported by default — ensure loaders/build tools handle them correctly. [1]
  • Jest packages now bundle internals into single files and use "exports" (ESM wrappers) — any deep/undocumented internal imports will break; switch to public APIs or request an export. [2][5]
  • Promise handling: fixed false-positive failures for promises rejected then caught — review tests that relied on previous behavior. [1]

Concrete migration checklist

  1. Upgrade Node and TypeScript to minimum supported versions (Node: use a supported LTS; TS >= 5.4). [1]
  2. npm install jest@^30.0.0 and run your test suite to surface failures. [1]
  3. Replace removed matcher aliases (run eslint-plugin-jest autofix or use provided Nx migrations). [1][6]
  4. Update tests that used expect.objectContaining with arrays or length objects:
    • Use expect.arrayContaining([...]) or direct array comparisons, and use toHaveLength or .mock.calls checks for lengths. [4]
  5. Update snapshots (run tests with -u to update, review diffs). [1]
  6. Remove any deep imports into Jest internals; use public APIs or open a PR to expose needed APIs. [2][5]
  7. Update CLI flags/config names if you use renamed options. [3]
  8. Verify jsdom-dependent tests after the jsdom version bump. [1]
  9. Run full CI and fix any additional failures (promise handling, non-enumerable props, .mts/.cts issues). [1][2]

References

  • Jest 30 release blog (overview & breaking changes). [1]
  • Upgrading to Jest 30 / versioned migration docs (internals, bundling, exports). [2]
  • Jest GitHub releases / changelog (flags, rename summary). [3]
  • Example migration notes (Backstage/Nx examples for array/objectContaining and matcher alias fixes). [4][6]

If you want, I can: (a) produce a codemod to replace common alias matchers in your repo, (b) scan a package.json + a few test files and point out likely breakages, or (c) generate exact grep/sed commands to find deep imports and removed CLI flags. Which would you like?


Jest 30 upgrade requires migration work.

Jest 30 drops support for Node 14/16/19/21, requires TypeScript ≥5.4, and changes critical matcher behavior (e.g., objectContaining no longer matches arrays; expect alias matchers removed). Update tests for asymmetric matcher changes, review snapshots, and verify Node/TypeScript versions before upgrading.

🤖 Prompt for AI Agents
In package.json around line 88, the project bumps jest to ^30.0.0 which requires
migration work: ensure CI and local environments run a supported Node version
(upgrade project/engines to a supported Node, e.g., 18/20, and drop
14/16/19/21), upgrade TypeScript to >=5.4 and update tsconfig if needed, update
tests to handle Jest 30 asymmetric matcher changes (replace objectContaining
usages that relied on array-matching, adjust tests to use explicit array
matchers or transform expectations), remove any usages of removed expect alias
matchers and replace with supported matcher alternatives, review and update
snapshots where output changed, run the full test suite and fix any failing
tests, and update CI matrix and package.json devDependencies accordingly before
merging.

@renovate
Copy link
Author

renovate bot commented Jan 8, 2026

⚠️ Artifact update problem

Renovate failed to update an artifact related to this branch. You probably do not want to merge this PR as-is.

♻ Renovate will retry this branch, including artifacts, only when one of the following happens:

  • any of the package files in this branch needs updating, or
  • the branch becomes conflicted, or
  • you click the rebase/retry checkbox if found above, or
  • you rename this PR's title to start with "rebase!" to trigger it manually

The artifact failure details are included below:

File name: yarn.lock
error Error: https://npm.pkg.github.com/@deepnote%2fblocks: authentication token not provided
    at params.callback [as _callback] (/opt/containerbase/tools/yarn/1.22.22/24.12.0/node_modules/yarn/lib/cli.js:66680:18)
    at self.callback (/opt/containerbase/tools/yarn/1.22.22/24.12.0/node_modules/yarn/lib/cli.js:141410:22)
    at Request.emit (node:events:508:28)
    at Request.<anonymous> (/opt/containerbase/tools/yarn/1.22.22/24.12.0/node_modules/yarn/lib/cli.js:142382:10)
    at Request.emit (node:events:508:28)
    at IncomingMessage.<anonymous> (/opt/containerbase/tools/yarn/1.22.22/24.12.0/node_modules/yarn/lib/cli.js:142304:12)
    at Object.onceWrapper (node:events:622:28)
    at IncomingMessage.emit (node:events:520:35)
    at endReadableNT (node:internal/streams/readable:1701:12)
    at process.processTicksAndRejections (node:internal/process/task_queues:89:21)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant