Skip to content

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.18.9 age confidence devDependencies major
@types/sinon (source) 10.0.20 -> 17.0.4 age confidence devDependencies major
actions/checkout v3 -> v5 age confidence action major
actions/setup-node v3 -> v5 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
cross-env 7.0.3 -> 10.1.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
jsdom 26.1.0 -> 27.0.0 age confidence devDependencies major
lint-staged 14.0.1 -> 16.2.3 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)

v5

Compare Source

v4

Compare Source

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

v5

Compare Source

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 🚀 #​3372

As part of this work we've removed the "sticky" .only() behavior #​3381

Examples

We've been remiss in merging #​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

  • Add filterNodeArgumentsForWorkerThreads option in #​3336
  • Add Node.js 23 to supported engines (and test matrix) in #​3346

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

  • Implement registerCompletionHandler() by @​novemberborn in #​3283

    AVA 6 expects test code to clean up gracefully when the tests are complete, allowing the test environment (worker thread or child process) to exit. If this does not happen, AVA will report a timeout. You can use registerCompletionHandler() to perform any other clean up (or indeed exit the process) after AVA has completed the test execution. See the description here.

  • Fix potential bug with watch mode when no failed test files are written by @​novemberborn in #​3287

  • Fix ava/internal ESM type module by @​codetheweb in #​3292

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
  • bump node requirement to ^18.20.0 || ^20.10.0 || >=22.0.0 and webpack requirement to >= 5.61.0 by @​JLHwung in #​1026
  • breaking: use output.hashFunction as loader cache hasher by @​JLHwung in #​1027
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

kentcdodds/cross-env (cross-env)

v10.1.0

Compare Source

Features
  • add support for default value syntax (152ae6a)

For example:

"dev:server": "cross-env wrangler dev --port ${PORT:-8787}",

If PORT is already set, use that value, otherwise fallback to 8787.

Learn more about Shell Parameter Expansion

v10.0.0

Compare Source

TL;DR: You should probably not have to change anything if:

  • You're using a modern maintained version of Node.js (v20+ is tested)
  • You're only using the CLI (most of you are as that's the intended purpose)

In this release (which should have been v8 except I had some issues with automated releases 🙈), I've updated all the things and modernized the package. This happened in #​261

Was this needed? Not really, but I just thought it'd be fun to modernize this package.

Here's the highlights of what was done.

  • Replace Jest with Vitest for testing
  • Convert all source files from .js to .ts with proper TypeScript types
  • Use zshy for ESM-only builds (removes CJS support)
  • Adopt @​epic-web/config for TypeScript, ESLint, and Prettier
  • Update to Node.js >=20 requirement
  • Remove kcd-scripts dependency
  • Add comprehensive e2e tests with GitHub Actions matrix testing
  • Update GitHub workflow with caching and cross-platform testing
  • Modernize documentation and remove outdated sections
  • Update all dependencies to latest versions
  • Add proper TypeScript declarations and exports

The tool maintains its original functionality while being completely modernized with the latest tooling and best practices

BREAKING CHANGES
  • This is a major rewrite that changes the module format from CommonJS to ESM-only. The package now requires Node.js >=20 and only exports ESM modules (not relevant in most cases).
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

  • fix: typo and source ~/.huskyrc correctly (compatibility with v8)
  • docs: fix example by @​typicode in #​1363

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())
jsdom/jsdom (jsdom)

v27.0.0

Compare Source

Changes since 26.1.0
  • Node.js v20 is now the minimum supported version.
  • Added a variety of event constructors, even though we do not implement their associated specifications or ever fire them: BeforeUnloadEvent, BlobEvent, DeviceMotionEvent (omitting requestPermission()), DeviceOrientationEvent (omitting requestPermission()), PointerEvent, PromiseRejectionEvent, and TransitionEvent.
  • Added movementX and movementY to MouseEvent. (These are from the Pointer Lock specification, the rest of which is not implemented.)
  • Added customElements.getName(). (mash-graz)
  • Updated the virtual console:
    • "jsdomError" events are now documented, with specific type properties and other properties that depend on the type.
    • sendTo() was renamed to forwardTo().
    • The jsdomErrors option to forwardTo() can be used to control which errors are sent to the Node.js console. This replaces the previous omitJSDOMErrors boolean option.
    • "jsdomError"s for failed XMLHttpRequest fetches are no longer emitted.
    • The values that are printed when forwarding "jsdomError"s to the Node.js console are streamlined.
  • Switched our CSS selector engine from nwsapi to @asamuzakjp/dom-selector, closing over 20 selector-related bugs.
  • Upgraded tough-cookie, which now considers URLs like http://localhost/ to be secure contexts (per the spec), and thus will return Secure-flagged cookies for such URLs. (colincasey)
  • Upgraded cssstyle, which brings along many improvements and fixes to the CSSStyleDeclaration object and its properties.
  • Updated the user agent stylesheet to be derived from the HTML Standard, instead of from an old revision of Chromium.
  • Changed element.click() to fire a PointerEvent instead of a MouseEvent.
  • Changed certain events to be passive by default.
  • Changed the <input> element's pattern="" attribute to use the v regular expression flag, instead of u.
  • Fixed many specification conformance issues with the Window object, including named properties and changing various data properties to accessor properties.
  • Fixed document.createEvent() to accept a more correct set of event names.
  • Fixed the ElementInternals accessibility getters and setters. (They were introduced in v23.1.0, but due to inadequate test coverage never actually worked.)
  • Fixed using Object.defineProperty() on certain objects, such as HTMLSelectElement instances.
  • Fixed jsdom.reconfigure({ url }) not updating document.baseURI or properties derived from it. (This regressed in v26.1.0.)
  • Fixed CSS system colors, as well as the initial, inherit, and unset keywords, to resolve correctly. (asamuzaK)
  • Fixed CSS display style resolution. (asamuzaK)
Changes since 27.0.0-beta.3
  • Upgraded cssstyle, which brings along various CSS parsing fixes.
lint-staged/lint-staged (lint-staged)

v16.2.3

Compare Source

Patch Changes
  • #​1669 27cd541 Thanks @​iiroj! - When using --fail-on-changes, automatically hidden (partially) unstaged changes are no longer counted to make lint-staged fail.

v16.2.2

Compare Source

Patch Changes
  • #​1667 699f95d Thanks @​iiroj! - The backup stash will not be dropped when using --fail-on-changes and there are errors. When reverting to original state is disabled (via --no-revert or --fail-on-changes), hidden (partially) unstaged changes are still restored automatically so that it's easier to resolve the situation manually.

    Additionally, the example for using the backup stash manually now uses the correct backup hash, if available:

    % npx lint-staged --fail-on-changes
    ✔ Backed up original state in git stash (c18d55a3)
    ✔ Running tasks for staged files...
    ✖ Tasks modified files and --fail-on-changes was used!
    ↓ Cleaning up temporary files...
    
    ✖ lint-staged failed because `--fail-on-changes` was used.
    
    Any lost modifications can be restored from a git stash:
    
      > git stash list --format="%h %s"
      c18d55a3 On main: lint-staged automatic backup
      > git apply --index c18d55a3

v16.2.1

Compare Source

Patch Changes
  • #​1664 8277b3b Thanks @​iiroj! - The built-in TypeScript types have been updated to more closely match the implementation. Notably, the list of staged files supplied to task functions is readonly string[] and can't be mutated. Thanks @​outslept!

    export default {
    ---  "*": (files: string[]) => void console.log('staged files', files)
    +++  "*": (files: readonly string[]) => void console.log('staged files', files)
    }
  • #​1654 70b9af3 Thanks @​iiroj! - This version has been published from GitHub Actions using Trusted Publishing for npm packages.

  • #​1659 4996817 Thanks @​iiroj! - Fix searching configuration files when the working directory is a subdirectory of a git repository, and there are package.json files in the working directory. This situation might happen when running lint-staged for a single package in a monorepo.

  • #​1654 7021f0a Thanks @​iiroj! - Return the caret semver range (^) to direct dependencies so that future patch and minor versions are allowed. This enables projects to better m


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 5 times, most recently from 1a2fc81 to 32d276b Compare July 15, 2025 14:31
@renovate renovate bot force-pushed the renovate/major-all branch 2 times, most recently from 63cf33e to 946543e Compare July 26, 2025 02:45
@renovate renovate bot force-pushed the renovate/major-all branch 2 times, most recently from 1cfc9da to 93d15a1 Compare August 3, 2025 16:50
@renovate renovate bot force-pushed the renovate/major-all branch 4 times, most recently from 9909164 to 31834b6 Compare August 15, 2025 10:27
@renovate renovate bot force-pushed the renovate/major-all branch from 31834b6 to c9734c4 Compare August 25, 2025 10:13
@renovate renovate bot force-pushed the renovate/major-all branch 2 times, most recently from 22440ec to 8622e21 Compare September 13, 2025 00:02
@renovate renovate bot force-pushed the renovate/major-all branch 4 times, most recently from c4dcb5f to 675ae47 Compare September 18, 2025 00:59
@renovate renovate bot force-pushed the renovate/major-all branch 4 times, most recently from 6e44e8f to a90f5f1 Compare September 28, 2025 13:58
@renovate renovate bot force-pushed the renovate/major-all branch 2 times, most recently from 1c242f5 to 6b670e3 Compare October 1, 2025 03:30
@renovate renovate bot force-pushed the renovate/major-all branch from 6b670e3 to 78914c2 Compare October 10, 2025 19:43
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