Skip to content

Update all (major) #1218

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

Update all (major) #1218

wants to merge 1 commit into from

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented Jul 7, 2025

This PR contains the following updates:

Package Change Age Confidence Type Update
@types/node (source) 18.19.112 -> 22.16.4 age confidence devDependencies major
@types/sinon (source) 10.0.20 -> 17.0.4 age confidence devDependencies major
actions/checkout v3 -> v4 age confidence action major
actions/setup-node v3 -> v4 age confidence action major
ava (source) 5.3.1 -> 6.4.1 age confidence devDependencies major
babel-loader 9.1.3 -> 10.0.0 age confidence devDependencies major
css-loader 6.10.0 -> 7.1.2 age confidence devDependencies major
husky 8.0.3 -> 9.1.7 age confidence devDependencies major
lint-staged 14.0.1 -> 16.1.2 age confidence devDependencies major
npm-run-all2 5.0.2 -> 8.0.4 age confidence devDependencies major
rimraf 5.0.5 -> 6.0.1 age confidence devDependencies major
style-loader 3.3.4 -> 4.0.0 age confidence devDependencies major
webpack-cli (source) 5.1.4 -> 6.0.1 age confidence devDependencies major

Release Notes

actions/checkout (actions/checkout)

v4

Compare Source

actions/setup-node (actions/setup-node)

v4

Compare Source

avajs/ava (ava)

v6.4.1

Compare Source

What's Changed

New Contributors

Full Changelog: avajs/ava@v6.4.0...v6.4.1

v6.4.0

Compare Source

What's Changed

Interactive watch mode filters

@​mmulet did fantastic work to spearhead interactive watch mode filters. You can now filter test files by glob patterns, and tests by matching their titles. It's just like you already could from the CLI itself, but now without exiting AVA 🚀 https://github.com/avajs/ava/pull/3372

As part of this work we've removed the "sticky" .only() behavior https://github.com/avajs/ava/pull/3381

Examples

We've been remiss in merging https://github.com/avajs/ava/pull/3335 which updates the examples to use AVA 6. It's done now, examples are up to date and it's all due to @​tommy-mitchell 👏

New Contributors

Full Changelog: avajs/ava@v6.3.0...v6.4.0

v6.3.0

Compare Source

What's Changed

New Contributors

Full Changelog: avajs/ava@v6.2.0...v6.3.0

v6.2.0

Compare Source

What's Changed

New Contributors

Full Changelog: avajs/ava@v6.1.3...v6.2.0

v6.1.3

Compare Source

What's Changed

New Contributors

Full Changelog: avajs/ava@v6.1.2...v6.1.3

v6.1.2

Compare Source

What's Changed

Full Changelog: avajs/ava@v6.1.1...v6.1.2

v6.1.1

Compare Source

What's Changed

Full Changelog: avajs/ava@v6.1.0...v6.1.1

v6.1.0

Compare Source

What's Changed

Full Changelog: avajs/ava@v6.0.1...v6.1.0

v6.0.1

Compare Source

What's Changed

Full Changelog: avajs/ava@v6.0.0...v6.0.1

v6.0.0

Compare Source

Breaking Changes

  • AVA now requires Node.js versions 18.18, 20.8 or 21. Versions 14 and 16 are no longer supported. #​3251 #​3216

  • When tests finish, worker threads or child processes are no longer exited through proces.exit(). If your test file does not exit on its own, the test run will time out. #​3260

  • Changes to watch mode #​3218:

    • Watch mode can no longer be started via the ava.config.* or package.json configuration.
    • The ignoredByWatcher configuration has moved to the watchMode object, under the ignoreChanges key.
    • Watch mode now uses the built-in fs.watch() in recursive mode. This is supported on Linux in Node.js 20 or newer, and MacOS and Windows in Node.js 18 as well. There are caveats to keep in mind.
  • Failed assertions now throw, meaning that any subsequent code is not executed. This also impacts the type definitions. #​3246

  • Only native errors are now considered errors by the t.throws() and t.throwsAsync() assertions. Object.create(Error.prototype) is not a native error. #​3229

  • Changes to modules loaded through the require configuration #​3184:

    • If such modules export a default function, this function is now invoked.
    • Local files are loaded through @ava/typescript if necessary.

Improvements

Rewritten watcher

The watcher has been rewritten. It’s now built on fs.watch() in recursive mode.

@vercel/nft is used to perform static dependency analysis, supporting ESM and CJS imports for JavaScript & TypeScript source files. This is a huge improvement over the previous runtime tracking of CJS imports, which did not support ESM.

Integration with @ava/typescript has been improved. The watcher can now detect a change to a TypeScript source file, then wait for the corresponding build output to change before re-running tests.

The ignoredByWatcher configuration has moved to the watchMode object, under the ignoreChanges key.

See #​3218 and #​3257.

Failed assertions now throw

Assertions now throw a TestFailure error when they fail. This error is not exported or documented and should not be used or thrown manually. You cannot catch this error in order to recover from a failure, use t.try() instead.

All assertions except for t.throws() and t.throwsAsync() now return true when they pass. This is useful for some of the assertions in TypeScript where they can be used as a type guard.

Committing a failed t.try() result now also throws.

See #​3246.

t.throws() and t.throwsAsync() can now expect any error

By default, the thrown error (or rejection reason) must be a native error. You can change the assertion to expect any kind of error by setting any: true in the expectation object:

t.throws(() => { throw 'error' }, {any: true})

See #​3245 by @​adiSuper94.

The require configuration is now more powerful

It now loads ES modules.

Local files are loaded through @ava/typescript if necessary, so you can also write these in TypeScript.

If there is a default export function, it is invoked after loading. The function is awaited so it can do asynchronous setup before further modules are loaded. Arguments from the configuration can be passed to the function (as a [structured clone](https://developer.mozilla.org/en-US/docs/Web/API/structuredClone)).

See #​3184 by @​sculpt0r.

Other changes worth noting
  • Internal events can now be observed (experimentally). See #​3247 by @​codetheweb. It’s experimental and undocumented.
  • You can now use t.timeout.clear() to restore a previous t.timeout(). #​3221
  • Code coverage is flushed to disk at opportune moments. #​3220

New Contributors

Full Changelog: avajs/ava@v5.3.1...v6.0.0

babel/babel-loader (babel-loader)

v10.0.0

Compare Source

What's Changed

Breaking Changes
New Features
Bug Fixes
Docs
Dependencies
Internal

New Contributors

Full Changelog: babel/babel-loader@v9.1.3...v10.0.0

v9.2.1

Compare Source

What's Changed

Full Changelog: babel/babel-loader@v9.2.0...v9.2.1

v9.2.0

Compare Source

What's Changed

Full Changelog: babel/babel-loader@v9.1.3...v9.2.0

webpack-contrib/css-loader (css-loader)

v7.1.2

Compare Source

v7.1.1

Compare Source

v7.1.0

Compare Source

Features
  • added the getJSON option to output CSS modules mapping (#​1577) (af834b4)

v7.0.0

Compare Source

⚠ BREAKING CHANGES
  • The modules.namedExport option is true by default if you enable the esModule option

Migration guide:

Before:

import style from "./style.css";

console.log(style.myClass);

After:

import * as style from "./style.css";

console.log(style.myClass);

To restore 6.x behavior, please use:

module.exports = {
  module: {
    rules: [
      {
        test: /\.css$/i,
        loader: "css-loader",
        options: {
          modules: {
            namedExport: false,
            exportLocalsConvention: 'as-is',
            //
            // or, if you prefer camelcase style
            //
            // exportLocalsConvention: 'camel-case-only'
          },
        },
      },
    ],
  },
};

Typescript migration:

Before:

declare module '*.module.css' {
  const classes: { [key: string]: string };
  export default classes;
}

After:

declare module '*.module.css' {
  const classes: { [key: string]: string };
  export = classes;
}
  • The modules.exportLocalsConvention has the value as-is when the modules.namedExport option is true and you don't specify a value
  • Minimum supported webpack version is 5.27.0
  • Minimum supported Node.js version is 18.12.0
Features
  • The modules.namedExports option works fine with any modules.exportLocalsConvention values (f96a110)
  • Added dashed variants for the modules.exportLocalsConvention options (40e1668)

v6.11.0

Compare Source

Features
Bug Fixes
typicode/husky (husky)

v9.1.7

Compare Source

What's Changed

New Contributors

Full Changelog: typicode/husky@v9.1.6...v9.1.7

v9.1.6

Compare Source

What's Changed

New Contributors

Full Changelog: typicode/husky@v9.1.5...v9.1.6

v9.1.5

Compare Source

What's Changed

New Contributors

Full Changelog: typicode/husky@v9.1.4...v9.1.5

v9.1.4

Compare Source

  • Improve deprecation notice

v9.1.3

Compare Source

  • fix: better handle space in PATH

v9.1.2

Compare Source

Show a message instead of automatically removing deprecated code.

This only concerns projects that still have the following code in their hooks:

- #!/usr/bin/env sh # <- This is deprecated, remove it
- . "$(dirname -- "$0")/_/husky.sh"  # <- This is deprecated, remove it

### Rest of your hook code

Hooks with these lines will fail in v10.0.0

v9.1.1

Compare Source

Super saiyan god dog! It's over 9.0.0!

What's new

You can now run package commands directly, no need for npx or equivalents.
It makes writing hooks more intuitive and is also slightly faster 🐺⚡️

### .husky/pre-commit
- npx jest
+ jest # ~0.2s faster

A new recipe has been added to the docs. Lint staged files without external dependencies (inspired by Prettier docs). Feel free to modify it.

### .husky/pre-commit
prettier $(git diff --cached --name-only --diff-filter=ACMR | sed 's| |\\ |g') --write --ignore-unknown
git update-index --again

For more advanced use cases, see lint-staged.

Fixes

  • bunx husky init command
  • Workaround for some hooks implementation on Windows

Deprecations

  • #!/usr/bin/env sh and . "$(dirname -- "$0")/_/husky.sh" are deprecated. husky command will automatically remove them, no action required.
  • If you're having code in ~/.huskyrc please move it to .config/husky/init.sh

Support for these will be removed in v10.

Friendly reminder

If Git hooks don't fit your workflow, you can disable Husky globally. Just add export HUSKY=0 to .config/husky/init.sh.

I've seen some confusion about this on X, so just a heads-up!

Sponsoring

Husky is downloaded over 45M times per month and used by ~1.5M projects. If your company wants to sponsor, you can do so here: GitHub Sponsors.

Have a nice summer ☀️ I'm open to new opportunities/consulting so feel free to drop me a message 😉

v9.1.0

Compare Source

v9.0.11

Compare Source

v9.0.10

Compare Source

v9.0.9

Compare Source

v9.0.8

Compare Source

v9.0.7

Compare Source

v9.0.6

Compare Source

v9.0.5

Compare Source

v9.0.4

Compare Source

v9.0.3

Compare Source

v9.0.2

Compare Source

v9.0.1

Compare Source

Kicking off the year with an exciting update!

Note: install using husky@latest to get the bug fixes that were released after.

Introducing husky init

v8
npm pkg set scripts.prepare="husky install"
npm run prepare
npx husky add .husky/pre-commit "npm test"
v9

Adding husky to a project is now easier than ever. It's just a single line that does the same as above. No need to read the docs to get started anymore.

npx husky init

Adding a New Hook

v8
npx husky add  .husky/pre-commit "npm test"
git add --chmod=+x .husky/pre-commit # On Windows
v9

Adding a hook is as simple as creating a file. This can be accomplished using your favorite editor, a script or a basic echo command. For example, on Linux/macOS:

echo "npm test" > .husky/pre-commit

Further Size Reduction

v8 was already the most compact Git hooks manager at approximately 6kB.

v9 takes this a step further, reducing the size to just 3kB, likely making it the smallest devDependency in your toolkit.

To give you an idea of how small it is, the biggest file in the project is the MIT license 😄

More to Come

Additional features are in the pipeline for v9. Stay tuned 🙌

Other Changes

  • Enhanced security with CI and npm --provenance for safer publishing.
  • Added $XDG_CONFIG_HOME support. Move ~/.huskyrc to ~/.config/husky/init.sh for centralized configuration.
  • Fixed permission issue for Windows-created hooks; they no longer need to be executable.
  • Removed husky install. Use husky or husky some/dir for the same functionality (deprecation notice to be added).
  • Modified behavior when .git is missing; it now triggers a warning instead of failure.
  • Replaced HUSKY_DEBUG=1 with HUSKY=2 for debugging.
  • Updated the Husky API for module usage.
  • Transitioned to ESM for module usage.
  • Dropped support for Node 14 and 16.
  • Revamped docs.

How to Migrate

v9 is backward compatible with v8, allowing you to freely upgrade and migrate your hooks later.

Here are the steps to migrate:

package.json

{
  "scripts": {
-   "prepare": "husky install"
+   "prepare": "husky"
  }
}

.husky/pre-commit

- #!/usr/bin/env sh
- . "$(dirname -- "$0")/_/husky.sh"
npm test 

Note: sh will be used to run hooks, even if a shebang is set.

If you were using husky as a module:

- const husky = require('husky')
- // ...
+ import husky from 'husky'
+ console.log(husky())
lint-staged/lint-staged (lint-staged)

v16.1.2

Compare Source

Patch Changes
  • #​1570 a7c0c88 Thanks @​ItsNickBarry! - When using --diff-filter with the D option to include deleted staged files, lint-staged no longer tries to stage the deleted files, unless they're no longer deleted. Previously this caused an error from git add like fatal: pathspec 'deleted-file' did not match any files.

  • 38f942e Thanks @​iiroj! - Removed an extraneous log entry that printed shouldHidePArtiallyStagedFiles to console output.

v16.1.1

Compare Source

Patch Changes
  • #​1565 3686977 Thanks @​iiroj! - Lint-staged now explicitly warns about potential data loss when using --no-stash.

  • #​1571 02299a9 Thanks @​iiroj! - Function tasks (introduced in v16.0.0) only received the staged files matching the conpmnfigured glob, instead of all staged files.

  • #​1563 bc61c74 Thanks @​iiroj! - This version fixes incorrect behavior where unstaged changes were committed when using the --no-stash option. This happened because --no-stash implied --no-hide-partially-staged, meaning unstaged changes to files which also had other staged changes were added to the commit by lint-staged; this is no longer the case.

    The previous (incorrect) behavior can still be achieved by using both options --no-stash --no-hide-partially-staged at the same time.

v16.1.0

Compare Source

Minor Changes
  • #​1536 e729daa Thanks @​iiroj! - A new flag --no-revert has been introduced for when task modifications should be applied to the index before aborting the commit in case of errors. By default, lint-staged will clear all task modifications and revert to the original state.

  • #​1550 b27fa3f Thanks @​iiroj! - Lint-staged now ignores symlinks and leaves them out from the list of staged files.

Patch Changes

v16.0.0

Compare Source

Major Changes
  • #​1546 158d15c Thanks @​iiroj! - Processes are spawned using nano-spawn instead of execa. If you are using Node.js scripts as tasks, you might need to explicitly run them with node, especially when using Windows:

    {
      "*.js": "node my-js-linter.js"
    }
  • #​1546 158d15c Thanks @​iiroj! - The --shell flag has been removed and lint-staged no longer supports evaluating commands directly via a shell. To migrate existing commands, you can create a shell script and invoke it instead. Lint-staged will pass matched staged files as a list of arguments, accessible via "$@&#8203;":

v15.5.2

Compare Source

Patch Changes

v15.5.1

Compare Source

Patch Changes
  • #​1533 5d53534 Thanks @​iiroj! - Improve listing of staged files so that lint-staged doesn't crash when encountering an uninitialized submodule. This should result in less errors like:

    ✖ Failed to get staged files!
    

v15.5.0

Compare Source

Minor Changes
  • #​1526 630af5f Thanks @​iiroj! - Lint-staged no longer resets to the original state when preventing an empty git commit. This happens when your configured tasks reset all the staged changes, typically when trying to commit formatting changes which conflict with your linter setup like ESLint or Prettier.
Example with Prettier

By default Prettier prefers double quotes.

Previously
  1. Stage file.js with only double quotes " changed to '
  2. Run git commit -am "I don't like double quotes"
  3. Lint-staged runs prettier --write file.js, converting all the ' back to "
  4. Because there are now no changes, lint-staged fails, cancels the commit, and resets back to the original state
  5. Commit was not done, original state is restored and single quotes ' are staged
Now
  1. Stage file.js with only double-quotes " changed to '
  2. Run git commit -am "I don't like double quotes"
  3. Lint-staged runs prettier --write file.js, converting all the ' back to "
  4. Because there are now no changes, lint-staged fails and cancels the commit
  5. Commit was not done, and there are no staged changes

v15.4.3

Compare Source

Patch Changes
  • #​1512 cbfed1d Thanks @​tarik02! - Adjust TypeScript types for the default export so that it can be used as a value without error TS2693.

v15.4.2

Compare Source

Patch Changes
  • #​1509 8827ebf Thanks @​iiroj! - Change lint-staged's dependencies to use caret (^) ranges instead of tilde (~). This makes it easier for package managers to perform dependency management when minor-level updates are also permitted instead of just patch-level.

v15.4.1

Compare Source

Patch Changes

Configuration

📅 Schedule: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

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 force-pushed the renovate/major-all branch 4 times, most recently from f5f696b to 1a2fc81 Compare July 12, 2025 21:07
@renovate renovate bot force-pushed the renovate/major-all branch from 1a2fc81 to 32d276b Compare July 15, 2025 14:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants