diff --git a/.gitignore b/.gitignore index 3074bd3428..e9a4fbe8ce 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ package.json.lerna_backup /*.iml tsconfig.tsbuildinfo coverage +dist docs/.vitepress/dist docs/.vitepress/cache diff --git a/@alias/commitlint-config-angular/CHANGELOG.md b/@alias/commitlint-config-angular/CHANGELOG.md index 4ca7722b28..5c8046ab9d 100644 --- a/@alias/commitlint-config-angular/CHANGELOG.md +++ b/@alias/commitlint-config-angular/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package commitlint-config-angular + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package commitlint-config-angular diff --git a/@alias/commitlint-config-angular/package.json b/@alias/commitlint-config-angular/package.json index 84b1475ce3..6e1b9c8a08 100644 --- a/@alias/commitlint-config-angular/package.json +++ b/@alias/commitlint-config-angular/package.json @@ -1,7 +1,7 @@ { "name": "commitlint-config-angular", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shareable commitlint config enforcing the angular commit convention", "files": [ "index.js" @@ -31,10 +31,10 @@ "node": ">=v18" }, "dependencies": { - "@commitlint/config-angular": "^19.8.1" + "@commitlint/config-angular": "^20.0.0" }, "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@alias/commitlint-config-lerna-scopes/CHANGELOG.md b/@alias/commitlint-config-lerna-scopes/CHANGELOG.md index be5e949009..562ee1191b 100644 --- a/@alias/commitlint-config-lerna-scopes/CHANGELOG.md +++ b/@alias/commitlint-config-lerna-scopes/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package commitlint-config-lerna-scopes + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package commitlint-config-lerna-scopes diff --git a/@alias/commitlint-config-lerna-scopes/package.json b/@alias/commitlint-config-lerna-scopes/package.json index 8848bd9f80..83306fdafd 100644 --- a/@alias/commitlint-config-lerna-scopes/package.json +++ b/@alias/commitlint-config-lerna-scopes/package.json @@ -1,7 +1,7 @@ { "name": "commitlint-config-lerna-scopes", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shareable commitlint config enforcing lerna package names as scopes", "files": [ "index.js" @@ -31,10 +31,10 @@ "node": ">=v18" }, "dependencies": { - "@commitlint/config-lerna-scopes": "^19.8.1" + "@commitlint/config-lerna-scopes": "^20.0.0" }, "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@alias/commitlint-config-nx-scopes/CHANGELOG.md b/@alias/commitlint-config-nx-scopes/CHANGELOG.md index d926278c09..1a536c0de1 100644 --- a/@alias/commitlint-config-nx-scopes/CHANGELOG.md +++ b/@alias/commitlint-config-nx-scopes/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package commitlint-config-nx-scopes + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package commitlint-config-nx-scopes diff --git a/@alias/commitlint-config-nx-scopes/package.json b/@alias/commitlint-config-nx-scopes/package.json index 55f734fb68..61281494bd 100644 --- a/@alias/commitlint-config-nx-scopes/package.json +++ b/@alias/commitlint-config-nx-scopes/package.json @@ -1,7 +1,7 @@ { "name": "commitlint-config-nx-scopes", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shareable commitlint config enforcing nx project names as scopes", "files": [ "index.js" @@ -31,10 +31,10 @@ "node": ">=v18" }, "dependencies": { - "@commitlint/config-nx-scopes": "^19.8.1" + "@commitlint/config-nx-scopes": "^20.0.0" }, "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@alias/commitlint-config-patternplate/CHANGELOG.md b/@alias/commitlint-config-patternplate/CHANGELOG.md index a6755c024c..5f53ade561 100644 --- a/@alias/commitlint-config-patternplate/CHANGELOG.md +++ b/@alias/commitlint-config-patternplate/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package commitlint-config-patternplate + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package commitlint-config-patternplate diff --git a/@alias/commitlint-config-patternplate/package.json b/@alias/commitlint-config-patternplate/package.json index 19726d1023..f18b0774de 100644 --- a/@alias/commitlint-config-patternplate/package.json +++ b/@alias/commitlint-config-patternplate/package.json @@ -1,7 +1,7 @@ { "name": "commitlint-config-patternplate", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint your commits, patternplate-style", "files": [ "index.js" @@ -31,10 +31,10 @@ "node": ">=v18" }, "dependencies": { - "@commitlint/config-patternplate": "^19.8.1" + "@commitlint/config-patternplate": "^20.0.0" }, "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@alias/commitlint/CHANGELOG.md b/@alias/commitlint/CHANGELOG.md index 11440c4a6d..1b3070e71a 100644 --- a/@alias/commitlint/CHANGELOG.md +++ b/@alias/commitlint/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + +**Note:** Version bump only for package commitlint + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package commitlint + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) diff --git a/@alias/commitlint/package.json b/@alias/commitlint/package.json index a8f68b0dcf..d268076b51 100644 --- a/@alias/commitlint/package.json +++ b/@alias/commitlint/package.json @@ -1,7 +1,7 @@ { "name": "commitlint", "type": "module", - "version": "19.8.1", + "version": "20.1.0", "description": "Lint your commit messages", "files": [ "cli.js" @@ -36,12 +36,12 @@ }, "license": "MIT", "dependencies": { - "@commitlint/cli": "^19.8.1", - "@commitlint/types": "^19.8.1" + "@commitlint/cli": "^20.1.0", + "@commitlint/types": "^20.0.0" }, "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1", + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", "tinyexec": "^1.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" diff --git a/@commitlint/cli/CHANGELOG.md b/@commitlint/cli/CHANGELOG.md index 07a6b0b285..7d1038bbea 100644 --- a/@commitlint/cli/CHANGELOG.md +++ b/@commitlint/cli/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + +**Note:** Version bump only for package @commitlint/cli + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/cli + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) diff --git a/@commitlint/cli/package.json b/@commitlint/cli/package.json index b725ee47d7..7a5ccfc778 100644 --- a/@commitlint/cli/package.json +++ b/@commitlint/cli/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/cli", "type": "module", - "version": "19.8.1", + "version": "20.1.0", "description": "Lint your commit messages", "files": [ "index.cjs", @@ -39,8 +39,8 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1", + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", "@types/lodash.merge": "^4.6.8", "@types/node": "^18.19.17", "@types/yargs": "^17.0.29", @@ -48,11 +48,11 @@ "lodash.merge": "^4.6.2" }, "dependencies": { - "@commitlint/format": "^19.8.1", - "@commitlint/lint": "^19.8.1", - "@commitlint/load": "^19.8.1", - "@commitlint/read": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/format": "^20.0.0", + "@commitlint/lint": "^20.0.0", + "@commitlint/load": "^20.1.0", + "@commitlint/read": "^20.0.0", + "@commitlint/types": "^20.0.0", "tinyexec": "^1.0.0", "yargs": "^17.0.0" }, diff --git a/@commitlint/config-angular-type-enum/CHANGELOG.md b/@commitlint/config-angular-type-enum/CHANGELOG.md index e9501ad00b..51e6839438 100644 --- a/@commitlint/config-angular-type-enum/CHANGELOG.md +++ b/@commitlint/config-angular-type-enum/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-angular-type-enum + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/config-angular-type-enum diff --git a/@commitlint/config-angular-type-enum/package.json b/@commitlint/config-angular-type-enum/package.json index 0214fd2503..44abe83730 100644 --- a/@commitlint/config-angular-type-enum/package.json +++ b/@commitlint/config-angular-type-enum/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/config-angular-type-enum", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shareable commitlint config enforcing the angular commit convention types", "main": "index.js", "files": [ @@ -32,7 +32,7 @@ "node": ">=v18" }, "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-angular/CHANGELOG.md b/@commitlint/config-angular/CHANGELOG.md index 682b93d817..f16785c1ff 100644 --- a/@commitlint/config-angular/CHANGELOG.md +++ b/@commitlint/config-angular/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-angular + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/config-angular diff --git a/@commitlint/config-angular/package.json b/@commitlint/config-angular/package.json index 05a06726c0..25d65bbc27 100644 --- a/@commitlint/config-angular/package.json +++ b/@commitlint/config-angular/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/config-angular", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shareable commitlint config enforcing the angular commit convention", "main": "index.js", "files": [ @@ -32,11 +32,11 @@ "node": ">=v18" }, "devDependencies": { - "@commitlint/lint": "^19.8.1", - "@commitlint/utils": "^19.8.1" + "@commitlint/lint": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/config-angular-type-enum": "^19.8.1" + "@commitlint/config-angular-type-enum": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-conventional/CHANGELOG.md b/@commitlint/config-conventional/CHANGELOG.md index 9997aa721f..0242ace145 100644 --- a/@commitlint/config-conventional/CHANGELOG.md +++ b/@commitlint/config-conventional/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-conventional + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/config-conventional diff --git a/@commitlint/config-conventional/package.json b/@commitlint/config-conventional/package.json index 24444885bf..5ef4fc7bb5 100644 --- a/@commitlint/config-conventional/package.json +++ b/@commitlint/config-conventional/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/config-conventional", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shareable commitlint config enforcing conventional commits", "main": "lib/index.js", "files": [ @@ -35,11 +35,11 @@ "node": ">=v18" }, "devDependencies": { - "@commitlint/lint": "^19.8.1", - "@commitlint/utils": "^19.8.1" + "@commitlint/lint": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.0.0", "conventional-changelog-conventionalcommits": "^7.0.2" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" diff --git a/@commitlint/config-lerna-scopes/CHANGELOG.md b/@commitlint/config-lerna-scopes/CHANGELOG.md index b0a1cb73b9..fb311bbd39 100644 --- a/@commitlint/config-lerna-scopes/CHANGELOG.md +++ b/@commitlint/config-lerna-scopes/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-lerna-scopes + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/config-lerna-scopes diff --git a/@commitlint/config-lerna-scopes/package.json b/@commitlint/config-lerna-scopes/package.json index e9faa56790..1e7544a39e 100644 --- a/@commitlint/config-lerna-scopes/package.json +++ b/@commitlint/config-lerna-scopes/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/config-lerna-scopes", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shareable commitlint config enforcing lerna package and workspace names as scopes", "main": "index.js", "files": [ @@ -40,12 +40,12 @@ "node": ">=v18" }, "dependencies": { - "@commitlint/config-workspace-scopes": "^19.8.1", + "@commitlint/config-workspace-scopes": "^20.0.0", "fast-glob": "^3.3.3" }, "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-nx-scopes/CHANGELOG.md b/@commitlint/config-nx-scopes/CHANGELOG.md index 7c4946e765..e94fbc25e6 100644 --- a/@commitlint/config-nx-scopes/CHANGELOG.md +++ b/@commitlint/config-nx-scopes/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-nx-scopes + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/config-nx-scopes diff --git a/@commitlint/config-nx-scopes/package.json b/@commitlint/config-nx-scopes/package.json index 453b22466d..63ad4e7848 100644 --- a/@commitlint/config-nx-scopes/package.json +++ b/@commitlint/config-nx-scopes/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/config-nx-scopes", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shareable commitlint config enforcing nx project names as scopes", "main": "index.js", "files": [ @@ -40,11 +40,11 @@ "node": ">=v18" }, "dependencies": { - "@commitlint/types": "^19.8.1" + "@commitlint/types": "^20.0.0" }, "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-patternplate/CHANGELOG.md b/@commitlint/config-patternplate/CHANGELOG.md index f9a31d644c..2b236b1179 100644 --- a/@commitlint/config-patternplate/CHANGELOG.md +++ b/@commitlint/config-patternplate/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-patternplate + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/config-patternplate diff --git a/@commitlint/config-patternplate/package.json b/@commitlint/config-patternplate/package.json index 55c04c850c..91d166fd6f 100644 --- a/@commitlint/config-patternplate/package.json +++ b/@commitlint/config-patternplate/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/config-patternplate", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint your commits, patternplate-style", "main": "index.js", "files": [ @@ -32,12 +32,12 @@ "node": ">=v18" }, "dependencies": { - "@commitlint/config-angular": "^19.8.1", + "@commitlint/config-angular": "^20.0.0", "glob": "^10.3.10", "lodash.merge": "^4.6.2" }, "devDependencies": { - "@commitlint/utils": "^19.8.1", + "@commitlint/utils": "^20.0.0", "@types/lodash.merge": "^4.6.8" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" diff --git a/@commitlint/config-pnpm-scopes/CHANGELOG.md b/@commitlint/config-pnpm-scopes/CHANGELOG.md index 9dec389d43..27daf022c2 100644 --- a/@commitlint/config-pnpm-scopes/CHANGELOG.md +++ b/@commitlint/config-pnpm-scopes/CHANGELOG.md @@ -3,6 +3,47 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + + +### Features + +* **config-pnpm-scopes:** allow global scope ([#4553](https://github.com/conventional-changelog/commitlint/issues/4553)) ([e571970](https://github.com/conventional-changelog/commitlint/commit/e57197061447eb9ea74b8d81ab003ad3b4652be6)) + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-pnpm-scopes + + + + + +## [19.9.1](https://github.com/conventional-changelog/commitlint/compare/v19.9.0...v19.9.1) (2025-08-29) + + +### Bug Fixes + +* add TypeScript support and configuration for pnpm scopes ([#4544](https://github.com/conventional-changelog/commitlint/issues/4544)) ([ea75778](https://github.com/conventional-changelog/commitlint/commit/ea75778e8d32c932d85062902456cd821e471fdd)) + + + + + +# [19.9.0](https://github.com/conventional-changelog/commitlint/compare/v19.8.1...v19.9.0) (2025-08-26) + + +### Features + +* **config-pnpm-scopes:** migrate package to TypeScript ([#4541](https://github.com/conventional-changelog/commitlint/issues/4541)) ([6ae36ea](https://github.com/conventional-changelog/commitlint/commit/6ae36ea5a55d7736024461ec6af94a14b821acc4)) + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/config-pnpm-scopes diff --git a/@commitlint/config-pnpm-scopes/index.js b/@commitlint/config-pnpm-scopes/index.js deleted file mode 100644 index eb93cce86e..0000000000 --- a/@commitlint/config-pnpm-scopes/index.js +++ /dev/null @@ -1,79 +0,0 @@ -import path from "node:path"; - -import fg from "fast-glob"; -import readYamlFile from "read-yaml-file"; -import { readExactProjectManifest } from "@pnpm/read-project-manifest"; - -export default { - utils: { getProjects }, - rules: { - "scope-enum": (ctx) => - getProjects(ctx).then((packages) => [2, "always", packages]), - }, -}; - -function requirePackagesManifest(dir) { - return readYamlFile(path.join(dir, "pnpm-workspace.yaml")).catch((err) => { - if (err.code === "ENOENT") { - return null; - } - - throw err; - }); -} - -function normalizePatterns(patterns) { - const normalizedPatterns = []; - for (const pattern of patterns) { - normalizedPatterns.push(pattern.replace(/\/?$/, "/package.json")); - normalizedPatterns.push(pattern.replace(/\/?$/, "/package.json5")); - normalizedPatterns.push(pattern.replace(/\/?$/, "/package.yaml")); - } - return normalizedPatterns; -} - -function findWorkspacePackages(cwd) { - return requirePackagesManifest(cwd) - .then((manifest) => { - const patterns = normalizePatterns( - (manifest && manifest.packages) || ["**"], - ); - const opts = { - cwd, - ignore: ["**/node_modules/**", "**/bower_components/**"], - }; - - return fg(patterns, opts); - }) - .then((entries) => { - const paths = Array.from( - new Set(entries.map((entry) => path.join(cwd, entry))), - ); - - return Promise.all( - paths.map((manifestPath) => readExactProjectManifest(manifestPath)), - ); - }) - .then((manifests) => { - return manifests.map((manifest) => manifest.manifest); - }); -} - -function getProjects(context) { - const ctx = context || {}; - const cwd = ctx.cwd || process.cwd(); - - return findWorkspacePackages(cwd).then((projects) => { - return projects - .reduce((projects, project) => { - const name = project.name; - - if (name) { - projects.push(name.charAt(0) === "@" ? name.split("/")[1] : name); - } - - return projects; - }, []) - .sort(); - }); -} diff --git a/@commitlint/config-pnpm-scopes/index.test.js b/@commitlint/config-pnpm-scopes/index.test.ts similarity index 90% rename from @commitlint/config-pnpm-scopes/index.test.js rename to @commitlint/config-pnpm-scopes/index.test.ts index 5b28bf7d1e..8fd934b3e6 100644 --- a/@commitlint/config-pnpm-scopes/index.test.js +++ b/@commitlint/config-pnpm-scopes/index.test.ts @@ -51,11 +51,11 @@ test("scope-enum has expected modifier", async () => { expect(modifier).toBe("always"); }); -test("returns empty value for empty pnpm repository", async () => { +test("returns global scope for empty pnpm repository", async () => { const { "scope-enum": fn } = config.rules; const cwd = await npm.bootstrap("fixtures/empty", __dirname); const [, , value] = await fn({ cwd }); - expect(value).toEqual([]); + expect(value).toEqual(["global"]); }); test("returns expected value for basic pnpm repository", async () => { @@ -63,7 +63,7 @@ test("returns expected value for basic pnpm repository", async () => { const cwd = await npm.bootstrap("fixtures/basic", __dirname); const [, , value] = await fn({ cwd }); - expect(value).toEqual(["a", "b"]); + expect(value).toEqual(["a", "b", "global"]); }); test("returns expected value for scoped pnpm repository", async () => { @@ -72,5 +72,5 @@ test("returns expected value for scoped pnpm repository", async () => { const [, , value] = await fn({ cwd }); - expect(value).toEqual(["a", "b"]); + expect(value).toEqual(["a", "b", "global"]); }); diff --git a/@commitlint/config-pnpm-scopes/index.ts b/@commitlint/config-pnpm-scopes/index.ts new file mode 100644 index 0000000000..10dde7a74c --- /dev/null +++ b/@commitlint/config-pnpm-scopes/index.ts @@ -0,0 +1,85 @@ +import path from "node:path"; + +import fg from "fast-glob"; +import readYamlFileModule from "read-yaml-file"; +import { readExactProjectManifest } from "@pnpm/read-project-manifest"; +const readYamlFile = readYamlFileModule.default; + +export default { + utils: { getProjects }, + rules: { + "scope-enum": (ctx = {}) => + getProjects(ctx).then((packages: any) => [2, "always", packages]), + }, +}; + +function requirePackagesManifest(dir: any) { + return readYamlFile(path.join(dir, "pnpm-workspace.yaml")).catch( + (err: any) => { + if (err.code === "ENOENT") { + return null; + } + + throw err; + }, + ); +} + +function normalizePatterns(patterns: any) { + const normalizedPatterns = []; + for (const pattern of patterns) { + normalizedPatterns.push(pattern.replace(/\/?$/, "/package.json")); + normalizedPatterns.push(pattern.replace(/\/?$/, "/package.json5")); + normalizedPatterns.push(pattern.replace(/\/?$/, "/package.yaml")); + } + return normalizedPatterns; +} + +function findWorkspacePackages(cwd: any) { + return requirePackagesManifest(cwd) + .then((manifest: any) => { + const patterns = normalizePatterns( + (manifest && manifest.packages) || ["**"], + ); + const opts = { + cwd, + ignore: ["**/node_modules/**", "**/bower_components/**"], + }; + + return fg(patterns, opts); + }) + .then((entries: any) => { + const paths = Array.from( + new Set(entries.map((entry: any) => path.join(cwd, entry))), + ); + + return Promise.all( + paths.map((manifestPath: any) => + readExactProjectManifest(manifestPath), + ), + ); + }) + .then((manifests: any) => { + return manifests.map((manifest: any) => manifest.manifest); + }); +} + +function getProjects(context: any) { + const ctx = context || {}; + const cwd = ctx.cwd || process.cwd(); + + return findWorkspacePackages(cwd).then((projects: any) => { + const scopes = projects.reduce((acc: any, project: any) => { + const name = project.name; + + if (name) { + acc.add(name.charAt(0) === "@" ? name.split("/")[1] : name); + } + + return acc; + }, new Set()); + scopes.add("global"); + + return Array.from(scopes).sort(); + }); +} diff --git a/@commitlint/config-pnpm-scopes/package.json b/@commitlint/config-pnpm-scopes/package.json index af47383145..861dffcf97 100644 --- a/@commitlint/config-pnpm-scopes/package.json +++ b/@commitlint/config-pnpm-scopes/package.json @@ -1,13 +1,16 @@ { "name": "@commitlint/config-pnpm-scopes", "type": "module", - "version": "19.8.1", + "version": "20.1.0", "description": "Shareable commitlint config enforcing pnpm workspaces names as scopes", - "main": "index.js", + "main": "dist/index.js", + "types": "dist/index.d.ts", "files": [ - "index.js" + "dist" ], "scripts": { + "build": "tsc", + "test": "jest", "deps": "dep-check", "pkg": "pkg-check" }, @@ -37,8 +40,17 @@ "read-yaml-file": "^2.1.0" }, "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", + "@types/node": "^18.19.17", + "typescript": "^5.2.2" + }, + "exports": { + ".": { + "import": "./dist/index.js", + "require": "./dist/index.js", + "types": "./dist/index.d.ts" + } }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-pnpm-scopes/tsconfig.json b/@commitlint/config-pnpm-scopes/tsconfig.json new file mode 100644 index 0000000000..dddda3a388 --- /dev/null +++ b/@commitlint/config-pnpm-scopes/tsconfig.json @@ -0,0 +1,11 @@ +{ + "extends": "../../tsconfig.shared.json", + "compilerOptions": { + "composite": true, + "rootDir": "./", + "outDir": "./dist" + }, + "include": ["*.ts"], + "exclude": ["./dist/**/*"], + "references": [{ "path": "../types" }] +} diff --git a/@commitlint/config-rush-scopes/CHANGELOG.md b/@commitlint/config-rush-scopes/CHANGELOG.md index d9dd362676..1caf82066a 100644 --- a/@commitlint/config-rush-scopes/CHANGELOG.md +++ b/@commitlint/config-rush-scopes/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-rush-scopes + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/config-rush-scopes diff --git a/@commitlint/config-rush-scopes/package.json b/@commitlint/config-rush-scopes/package.json index 5b1ead3638..cf0b0136f8 100644 --- a/@commitlint/config-rush-scopes/package.json +++ b/@commitlint/config-rush-scopes/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/config-rush-scopes", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shareable commitlint config enforcing rush package and workspace names as scopes", "main": "index.js", "files": [ @@ -38,8 +38,8 @@ "jsonc": "^2.0.0" }, "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/config-validator/CHANGELOG.md b/@commitlint/config-validator/CHANGELOG.md index dadd1e275d..070307d41e 100644 --- a/@commitlint/config-validator/CHANGELOG.md +++ b/@commitlint/config-validator/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-validator + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/config-validator diff --git a/@commitlint/config-validator/package.json b/@commitlint/config-validator/package.json index 85531c05f9..567436d46c 100644 --- a/@commitlint/config-validator/package.json +++ b/@commitlint/config-validator/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/config-validator", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "config validator for commitlint.config.js", "main": "lib/validate.js", "types": "lib/validate.d.ts", @@ -36,10 +36,10 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.0.0", "ajv": "^8.11.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" diff --git a/@commitlint/config-workspace-scopes/CHANGELOG.md b/@commitlint/config-workspace-scopes/CHANGELOG.md index 7f02516c09..3635a1164f 100644 --- a/@commitlint/config-workspace-scopes/CHANGELOG.md +++ b/@commitlint/config-workspace-scopes/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/config-workspace-scopes + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/config-workspace-scopes diff --git a/@commitlint/config-workspace-scopes/package.json b/@commitlint/config-workspace-scopes/package.json index 82ab82781f..d68b65fe6d 100644 --- a/@commitlint/config-workspace-scopes/package.json +++ b/@commitlint/config-workspace-scopes/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/config-workspace-scopes", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shareable commitlint config enforcing workspace names as scopes", "main": "index.js", "scripts": { @@ -33,8 +33,8 @@ "glob": "^10.3.10" }, "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1", + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", "@types/glob": "^8.1.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" diff --git a/@commitlint/core/CHANGELOG.md b/@commitlint/core/CHANGELOG.md index d9b52c7218..51c59d17ca 100644 --- a/@commitlint/core/CHANGELOG.md +++ b/@commitlint/core/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + +**Note:** Version bump only for package @commitlint/core + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/core + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/core diff --git a/@commitlint/core/package.json b/@commitlint/core/package.json index ebf102c4b9..1407cce57f 100644 --- a/@commitlint/core/package.json +++ b/@commitlint/core/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/core", "type": "module", - "version": "19.8.1", + "version": "20.1.0", "description": "Lint your commit messages", "main": "lib/core.js", "types": "lib/core.d.ts", @@ -36,13 +36,13 @@ }, "license": "MIT", "dependencies": { - "@commitlint/format": "^19.8.1", - "@commitlint/lint": "^19.8.1", - "@commitlint/load": "^19.8.1", - "@commitlint/read": "^19.8.1" + "@commitlint/format": "^20.0.0", + "@commitlint/lint": "^20.0.0", + "@commitlint/load": "^20.1.0", + "@commitlint/read": "^20.0.0" }, "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/cz-commitlint/CHANGELOG.md b/@commitlint/cz-commitlint/CHANGELOG.md index 748b0cffc2..7f1b3bc6b8 100644 --- a/@commitlint/cz-commitlint/CHANGELOG.md +++ b/@commitlint/cz-commitlint/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/cz-commitlint + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/cz-commitlint diff --git a/@commitlint/cz-commitlint/package.json b/@commitlint/cz-commitlint/package.json index 3957c66d08..dd10160dda 100644 --- a/@commitlint/cz-commitlint/package.json +++ b/@commitlint/cz-commitlint/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/cz-commitlint", "type": "module", - "version": "19.8.1", + "version": "20.1.0", "description": "Commitizen adapter using the commitlint.config.js", "main": "./lib/index.js", "exports": { @@ -43,9 +43,9 @@ } }, "dependencies": { - "@commitlint/ensure": "^19.8.1", - "@commitlint/load": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/ensure": "^20.0.0", + "@commitlint/load": "^20.1.0", + "@commitlint/types": "^20.0.0", "chalk": "^5.3.0", "lodash.isplainobject": "^4.0.6", "word-wrap": "^1.2.5" diff --git a/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts b/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts index e28879f546..ddae52ae61 100644 --- a/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts +++ b/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.test.ts @@ -1,5 +1,5 @@ -import { describe, test, expect } from "vitest"; import { RuleConfigSeverity } from "@commitlint/types"; +import { describe, expect, test } from "vitest"; import { setPromptConfig } from "../store/prompts.js"; import { setRules } from "../store/rules.js"; @@ -253,6 +253,276 @@ describe("enum list", () => { expect(enumList?.[1]).toBe("lint"); expect(enumList?.[2]).toBe("cli"); }); + + test("should format enum items with emojis and descriptions, ensuring consistent spacing", () => { + const ENUM_RULE_LIST = ["feat", "fix", "chore"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + enum: { + feat: { + description: "Features", + emoji: "✨", + }, + fix: { + description: "Bug fixes", + emoji: "🐛", + }, + chore: { + description: "Chore", + emoji: "♻️", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "✨ feat: Features", + value: "feat", + short: "feat", + }, + { + name: "🐛 fix: Bug fixes", + value: "fix", + short: "fix", + }, + { + name: "♻️ chore: Chore", + value: "chore", + short: "chore", + }, + ]); + }); + + test("should handle custom alignment for emoji and description with extra space", () => { + const ENUM_RULE_LIST = ["feat", "fix", "chore"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + enum: { + feat: { + description: "Features", + emoji: "✨ ", + }, + fix: { + description: "Bug fixes", + emoji: "🐛 ", + }, + chore: { + description: "Chore", + emoji: "♻️ ", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "✨ feat: Features", + value: "feat", + short: "feat", + }, + { + name: "🐛 fix: Bug fixes", + value: "fix", + short: "fix", + }, + { + name: "♻️ chore: Chore", + value: "chore", + short: "chore", + }, + ]); + }); + + test("should handle inconsistent emoji usage by using 4 blank spaces as a prefix", () => { + const ENUM_RULE_LIST = ["feat", "fix", "chore"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + enum: { + feat: { + description: "Features", + emoji: "✨", + }, + fix: { + description: "Bug fixes", + }, + chore: { + description: "Chore", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "✨ feat: Features", + value: "feat", + short: "feat", + }, + { + name: " fix: Bug fixes", + value: "fix", + short: "fix", + }, + { + name: " chore: Chore", + value: "chore", + short: "chore", + }, + ]); + }); + + test("should handle no enums having emojis correctly", () => { + const ENUM_RULE_LIST = ["feat", "fix", "chore"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + enum: { + feat: { + description: "Features", + }, + fix: { + description: "Bug fixes", + }, + chore: { + description: "Chore", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "feat: Features", + value: "feat", + short: "feat", + }, + { + name: "fix: Bug fixes", + value: "fix", + short: "fix", + }, + { + name: "chore: Chore", + value: "chore", + short: "chore", + }, + ]); + }); + + test("should include the emoji in the value when `emojiInHeader` is true", () => { + const ENUM_RULE_LIST = ["feat", "fix"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + emojiInHeader: true, + enum: { + feat: { + description: "Features", + emoji: "✨", + }, + fix: { + description: "Bug fixes", + emoji: "🐛", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "✨ feat: Features", + value: "✨ feat", + short: "feat", + }, + { + name: "🐛 fix: Bug fixes", + value: "🐛 fix", + short: "fix", + }, + ]); + }); + + test("should trim empty spaces from emoji in the answer", () => { + const ENUM_RULE_LIST = ["feat", "fix", "chore"]; + setRules({ + "type-enum": [RuleConfigSeverity.Error, "always", ENUM_RULE_LIST], + } as any); + + setPromptConfig({ + questions: { + type: { + emojiInHeader: true, + enum: { + feat: { + description: "Features", + emoji: "✨ ", + }, + fix: { + description: "Bug fixes", + emoji: "🐛 ", + }, + chore: { + description: "Chore", + emoji: "♻️ ", + }, + }, + }, + }, + }); + + const enumList = getRuleQuestionConfig("type")?.enumList; + expect(enumList).toEqual([ + { + name: "✨ feat: Features", + value: "✨ feat", + short: "feat", + }, + { + name: "🐛 fix: Bug fixes", + value: "🐛 fix", + short: "fix", + }, + { + name: "♻️ chore: Chore", + value: "♻️ chore", + short: "chore", + }, + ]); + }); }); test("should return correct question config", () => { diff --git a/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.ts b/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.ts index 7cc85fe7fc..50ee8a1907 100644 --- a/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.ts +++ b/@commitlint/cz-commitlint/src/services/getRuleQuestionConfig.ts @@ -35,23 +35,41 @@ export default function (rulePrefix: RuleField): QuestionConfig | null { if (enumRuleList) { const enumDescriptions = questionSettings?.["enum"]; + const emojiInHeader = questionSettings?.emojiInHeader; if (enumDescriptions) { const enumNames = Object.keys(enumDescriptions); const longest = Math.max( ...enumRuleList.map((enumName) => enumName.length), ); - // TODO emoji + title + const firstHasEmoji = + (enumDescriptions[enumNames[0]]?.emoji?.length ?? 0) > 0; + const hasConsistentEmojiUsage = !enumRuleList.some( + (enumName) => + (enumDescriptions[enumName]?.emoji?.length ?? 0) > 0 !== + firstHasEmoji, + ); enumList = enumRuleList .sort((a, b) => enumNames.indexOf(a) - enumNames.indexOf(b)) .map((enumName) => { const enumDescription = enumDescriptions[enumName]?.description; if (enumDescription) { - return { - name: `${enumName}:`.padEnd(longest + 4) + enumDescription, - value: enumName, - short: enumName, - }; + const emoji = enumDescriptions[enumName]?.emoji; + + const emojiPrefix = emoji + ? `${emoji} ` + : hasConsistentEmojiUsage + ? "" + : " "; + + const paddedName = `${enumName}:`.padEnd(longest + 4); + + const name = `${emojiPrefix}${paddedName}${enumDescription}`; + + const value = + emojiInHeader && emoji ? `${emoji.trim()} ${enumName}` : enumName; + + return { name, value, short: enumName }; } else { return enumName; } diff --git a/@commitlint/ensure/CHANGELOG.md b/@commitlint/ensure/CHANGELOG.md index 35bdc7fe8e..611e79b829 100644 --- a/@commitlint/ensure/CHANGELOG.md +++ b/@commitlint/ensure/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + + +* feat(rules)!: make body-max-line-length ignore lines with URLs (#4486) ([2f37a88](https://github.com/conventional-changelog/commitlint/commit/2f37a886be4b07bcd8e1126cc6a13256e7b6cc37)), closes [#4486](https://github.com/conventional-changelog/commitlint/issues/4486) + + +### BREAKING CHANGES + +* when lines contain URLs exceeding the maximum +line length `body-max-line-length` will be ignored + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/ensure diff --git a/@commitlint/ensure/package.json b/@commitlint/ensure/package.json index 030f698dd3..5b439abef3 100644 --- a/@commitlint/ensure/package.json +++ b/@commitlint/ensure/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/ensure", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -36,7 +36,7 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^19.8.1", + "@commitlint/utils": "^20.0.0", "@types/lodash.camelcase": "^4.3.8", "@types/lodash.kebabcase": "^4.1.8", "@types/lodash.snakecase": "^4.1.8", @@ -45,7 +45,7 @@ "glob": "^10.3.10" }, "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.0.0", "lodash.camelcase": "^4.3.0", "lodash.kebabcase": "^4.1.1", "lodash.snakecase": "^4.1.1", diff --git a/@commitlint/ensure/src/max-line-length.ts b/@commitlint/ensure/src/max-line-length.ts index 02f908c374..b25a2b6d1e 100644 --- a/@commitlint/ensure/src/max-line-length.ts +++ b/@commitlint/ensure/src/max-line-length.ts @@ -1,5 +1,13 @@ import ensure from "./max-length.js"; +// Allow an exception for long lines which contain URLs. +// +// This is overly lenient, in order to avoid costly regexps which +// have to worry about all the many edge cases of valid URLs. +const URL_REGEX = /\bhttps?:\/\/\S+/; + export default (value: string, max: number): boolean => typeof value === "string" && - value.split(/\r?\n/).every((line) => ensure(line, max)); + value + .split(/\r?\n/) + .every((line) => URL_REGEX.test(line) || ensure(line, max)); diff --git a/@commitlint/execute-rule/CHANGELOG.md b/@commitlint/execute-rule/CHANGELOG.md index 66b1291bec..2e9d17a6c0 100644 --- a/@commitlint/execute-rule/CHANGELOG.md +++ b/@commitlint/execute-rule/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/execute-rule + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/execute-rule diff --git a/@commitlint/execute-rule/package.json b/@commitlint/execute-rule/package.json index 5ad61f7105..507e533f1e 100644 --- a/@commitlint/execute-rule/package.json +++ b/@commitlint/execute-rule/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/execute-rule", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -36,7 +36,7 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/format/CHANGELOG.md b/@commitlint/format/CHANGELOG.md index 5318efa0b0..b809f3fa73 100644 --- a/@commitlint/format/CHANGELOG.md +++ b/@commitlint/format/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/format + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/format diff --git a/@commitlint/format/package.json b/@commitlint/format/package.json index 158fd7f795..695428c758 100644 --- a/@commitlint/format/package.json +++ b/@commitlint/format/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/format", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Format commitlint reports", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -36,10 +36,10 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.0.0", "chalk": "^5.3.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" diff --git a/@commitlint/is-ignored/CHANGELOG.md b/@commitlint/is-ignored/CHANGELOG.md index c8d120acdb..70f7b36b54 100644 --- a/@commitlint/is-ignored/CHANGELOG.md +++ b/@commitlint/is-ignored/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/is-ignored + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/is-ignored diff --git a/@commitlint/is-ignored/package.json b/@commitlint/is-ignored/package.json index bfe76422ce..baccfbcc7f 100644 --- a/@commitlint/is-ignored/package.json +++ b/@commitlint/is-ignored/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/is-ignored", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -36,13 +36,13 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/parse": "^19.8.1", - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1", + "@commitlint/parse": "^20.0.0", + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", "@types/semver": "^7.5.7" }, "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.0.0", "semver": "^7.6.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" diff --git a/@commitlint/lint/CHANGELOG.md b/@commitlint/lint/CHANGELOG.md index 4936f7e89a..4b349f746a 100644 --- a/@commitlint/lint/CHANGELOG.md +++ b/@commitlint/lint/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/lint + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/lint diff --git a/@commitlint/lint/package.json b/@commitlint/lint/package.json index be68ba3b98..5927c0d139 100644 --- a/@commitlint/lint/package.json +++ b/@commitlint/lint/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/lint", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint a string against commitlint rules", "main": "lib/lint.js", "types": "lib/lint.d.ts", @@ -36,14 +36,14 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/is-ignored": "^19.8.1", - "@commitlint/parse": "^19.8.1", - "@commitlint/rules": "^19.8.1", - "@commitlint/types": "^19.8.1" + "@commitlint/is-ignored": "^20.0.0", + "@commitlint/parse": "^20.0.0", + "@commitlint/rules": "^20.0.0", + "@commitlint/types": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/load/CHANGELOG.md b/@commitlint/load/CHANGELOG.md index c41859942c..0e17e68544 100644 --- a/@commitlint/load/CHANGELOG.md +++ b/@commitlint/load/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + +**Note:** Version bump only for package @commitlint/load + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/load + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/load diff --git a/@commitlint/load/package.json b/@commitlint/load/package.json index 4cd2f7158c..583a00ee61 100644 --- a/@commitlint/load/package.json +++ b/@commitlint/load/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/load", "type": "module", - "version": "19.8.1", + "version": "20.1.0", "description": "Load shared commitlint configuration", "main": "lib/load.js", "types": "lib/load.d.ts", @@ -36,7 +36,7 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^19.8.1", + "@commitlint/test": "^20.0.0", "@types/lodash.isplainobject": "^4.0.8", "@types/lodash.merge": "^4.6.8", "@types/lodash.uniq": "^4.5.8", @@ -45,10 +45,10 @@ "typescript": "^5.2.2" }, "dependencies": { - "@commitlint/config-validator": "^19.8.1", - "@commitlint/execute-rule": "^19.8.1", - "@commitlint/resolve-extends": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/config-validator": "^20.0.0", + "@commitlint/execute-rule": "^20.0.0", + "@commitlint/resolve-extends": "^20.1.0", + "@commitlint/types": "^20.0.0", "chalk": "^5.3.0", "cosmiconfig": "^9.0.0", "cosmiconfig-typescript-loader": "^6.1.0", diff --git a/@commitlint/message/CHANGELOG.md b/@commitlint/message/CHANGELOG.md index 55a9938896..4616d71675 100644 --- a/@commitlint/message/CHANGELOG.md +++ b/@commitlint/message/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/message + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/message diff --git a/@commitlint/message/package.json b/@commitlint/message/package.json index 23e8c4c7e6..3b3309c979 100644 --- a/@commitlint/message/package.json +++ b/@commitlint/message/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/message", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -36,8 +36,8 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/parse/CHANGELOG.md b/@commitlint/parse/CHANGELOG.md index 32410583fa..f8c257b73a 100644 --- a/@commitlint/parse/CHANGELOG.md +++ b/@commitlint/parse/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/parse + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/parse diff --git a/@commitlint/parse/package.json b/@commitlint/parse/package.json index 459dd54b27..ff1639e042 100644 --- a/@commitlint/parse/package.json +++ b/@commitlint/parse/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/parse", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -36,12 +36,12 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1", + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", "@types/conventional-commits-parser": "^5.0.0" }, "dependencies": { - "@commitlint/types": "^19.8.1", + "@commitlint/types": "^20.0.0", "conventional-changelog-angular": "^7.0.0", "conventional-commits-parser": "^5.0.0" }, diff --git a/@commitlint/prompt-cli/CHANGELOG.md b/@commitlint/prompt-cli/CHANGELOG.md index a8968ee480..dd443bf1b9 100644 --- a/@commitlint/prompt-cli/CHANGELOG.md +++ b/@commitlint/prompt-cli/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + +**Note:** Version bump only for package @commitlint/prompt-cli + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/prompt-cli + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) diff --git a/@commitlint/prompt-cli/package.json b/@commitlint/prompt-cli/package.json index dcb96d7552..830198ec30 100644 --- a/@commitlint/prompt-cli/package.json +++ b/@commitlint/prompt-cli/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/prompt-cli", "type": "module", - "version": "19.8.1", + "version": "20.1.0", "description": "commit prompt using commitlint.config.js", "main": "cli.js", "files": [ @@ -34,11 +34,11 @@ "node": ">=v18" }, "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/prompt": "^19.8.1", + "@commitlint/prompt": "^20.1.0", "inquirer": "^9.2.15", "tinyexec": "^1.0.0" }, diff --git a/@commitlint/prompt/CHANGELOG.md b/@commitlint/prompt/CHANGELOG.md index 04066b0025..f3804b12ac 100644 --- a/@commitlint/prompt/CHANGELOG.md +++ b/@commitlint/prompt/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + +**Note:** Version bump only for package @commitlint/prompt + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/prompt + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/prompt diff --git a/@commitlint/prompt/package.json b/@commitlint/prompt/package.json index bbe8da450f..3d57dc6c3e 100644 --- a/@commitlint/prompt/package.json +++ b/@commitlint/prompt/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/prompt", "type": "module", - "version": "19.8.1", + "version": "20.1.0", "description": "commitizen prompt using commitlint.config.js", "main": "./lib/index.js", "files": [ @@ -38,16 +38,16 @@ "node": ">=v18" }, "devDependencies": { - "@commitlint/config-angular": "^19.8.1", + "@commitlint/config-angular": "^20.0.0", "@commitlint/types": "^14.0.0", - "@commitlint/utils": "^19.8.1", + "@commitlint/utils": "^20.0.0", "@types/inquirer": "^9.0.7", "commitizen": "^4.2.4" }, "dependencies": { - "@commitlint/ensure": "^19.8.1", - "@commitlint/load": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/ensure": "^20.0.0", + "@commitlint/load": "^20.1.0", + "@commitlint/types": "^20.0.0", "chalk": "^5.3.0", "inquirer": "^9.2.15" }, diff --git a/@commitlint/read/CHANGELOG.md b/@commitlint/read/CHANGELOG.md index 1eef98959c..60f0f234b0 100644 --- a/@commitlint/read/CHANGELOG.md +++ b/@commitlint/read/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/read + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) diff --git a/@commitlint/read/package.json b/@commitlint/read/package.json index 7767e16aac..56294132a1 100644 --- a/@commitlint/read/package.json +++ b/@commitlint/read/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/read", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Read commit messages from a specified range or last edit", "main": "lib/read.js", "types": "lib/read.d.ts", @@ -36,14 +36,14 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1", + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", "@types/git-raw-commits": "^2.0.3", "@types/minimist": "^1.2.4" }, "dependencies": { - "@commitlint/top-level": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/top-level": "^20.0.0", + "@commitlint/types": "^20.0.0", "git-raw-commits": "^4.0.0", "minimist": "^1.2.8", "tinyexec": "^1.0.0" diff --git a/@commitlint/resolve-extends/CHANGELOG.md b/@commitlint/resolve-extends/CHANGELOG.md index 4a31a6569d..70308b3a70 100644 --- a/@commitlint/resolve-extends/CHANGELOG.md +++ b/@commitlint/resolve-extends/CHANGELOG.md @@ -3,6 +3,25 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + + +### Bug Fixes + +* **resolve-extends:** add import attribute for JSON config files ([#4551](https://github.com/conventional-changelog/commitlint/issues/4551)) ([82936c9](https://github.com/conventional-changelog/commitlint/commit/82936c90a2845b4f5721eef3c71d6183416d5b78)) + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/resolve-extends + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/resolve-extends diff --git a/@commitlint/resolve-extends/package.json b/@commitlint/resolve-extends/package.json index 7bf68f0f8c..87bd312318 100644 --- a/@commitlint/resolve-extends/package.json +++ b/@commitlint/resolve-extends/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/resolve-extends", "type": "module", - "version": "19.8.1", + "version": "20.1.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -36,12 +36,12 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^19.8.1", + "@commitlint/utils": "^20.0.0", "@types/lodash.mergewith": "^4.6.8" }, "dependencies": { - "@commitlint/config-validator": "^19.8.1", - "@commitlint/types": "^19.8.1", + "@commitlint/config-validator": "^20.0.0", + "@commitlint/types": "^20.0.0", "global-directory": "^4.0.1", "import-meta-resolve": "^4.0.0", "lodash.mergewith": "^4.6.2", diff --git a/@commitlint/resolve-extends/src/index.ts b/@commitlint/resolve-extends/src/index.ts index 8c6942db27..b44bd3956a 100644 --- a/@commitlint/resolve-extends/src/index.ts +++ b/@commitlint/resolve-extends/src/index.ts @@ -1,3 +1,4 @@ +import { createRequire } from "node:module"; import fs from "node:fs"; import path from "node:path"; import { pathToFileURL, fileURLToPath } from "node:url"; @@ -10,6 +11,11 @@ import { validateConfig } from "@commitlint/config-validator"; import type { ParserPreset, UserConfig } from "@commitlint/types"; const dynamicImport = async (id: string): Promise => { + if (id.endsWith(".json")) { + const require = createRequire(import.meta.url); + return require(id); + } + const imported = await import( path.isAbsolute(id) ? pathToFileURL(id).toString() : id ); diff --git a/@commitlint/rules/CHANGELOG.md b/@commitlint/rules/CHANGELOG.md index 3b687dff32..00e337a210 100644 --- a/@commitlint/rules/CHANGELOG.md +++ b/@commitlint/rules/CHANGELOG.md @@ -3,6 +3,21 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + + +* feat(rules)!: make body-max-line-length ignore lines with URLs (#4486) ([2f37a88](https://github.com/conventional-changelog/commitlint/commit/2f37a886be4b07bcd8e1126cc6a13256e7b6cc37)), closes [#4486](https://github.com/conventional-changelog/commitlint/issues/4486) + + +### BREAKING CHANGES + +* when lines contain URLs exceeding the maximum +line length `body-max-line-length` will be ignored + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) diff --git a/@commitlint/rules/package.json b/@commitlint/rules/package.json index f02396c34e..f2d15086ce 100644 --- a/@commitlint/rules/package.json +++ b/@commitlint/rules/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/rules", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -36,17 +36,17 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/parse": "^19.8.1", - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1", + "@commitlint/parse": "^20.0.0", + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0", "conventional-changelog-angular": "^7.0.0", "glob": "^10.3.10" }, "dependencies": { - "@commitlint/ensure": "^19.8.1", - "@commitlint/message": "^19.8.1", - "@commitlint/to-lines": "^19.8.1", - "@commitlint/types": "^19.8.1" + "@commitlint/ensure": "^20.0.0", + "@commitlint/message": "^20.0.0", + "@commitlint/to-lines": "^20.0.0", + "@commitlint/types": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/rules/src/body-max-line-length.test.ts b/@commitlint/rules/src/body-max-line-length.test.ts index 26974ca6cc..7a599b30a3 100644 --- a/@commitlint/rules/src/body-max-line-length.test.ts +++ b/@commitlint/rules/src/body-max-line-length.test.ts @@ -1,9 +1,11 @@ import { test, expect } from "vitest"; import parse from "@commitlint/parse"; +import type { Commit } from "conventional-commits-parser"; import { bodyMaxLineLength } from "./body-max-line-length.js"; const short = "a"; const long = "ab"; +const url = "https://example.com/URL/with/a/very/long/path"; const value = short.length; @@ -13,14 +15,30 @@ const messages = { long: `test: subject\n${long}`, shortMultipleLines: `test:subject\n${short}\n${short}\n${short}`, longMultipleLines: `test:subject\n${short}\n${long}\n${short}`, -}; + urlStandalone: `test:subject\n${short}\n${url}\n${short}`, + urlMarkdownLinkInline: `test:subject + +This is a [link](${url}).`, + urlMarkdownLinkInList: `test:subject + +Link in a list: + +- ${url}`, + urlMarkdownLinkInFooter: `test:subject -const parsed = { - empty: parse(messages.empty), - short: parse(messages.short), - long: parse(messages.long), +Finally, [link][] via footer. + +[link]: ${url}`, }; +const parsed = Object.entries(messages).reduce( + (_parsed, [key, message]) => + Object.assign(_parsed, { + [key]: parse(message), + }), + {} as Record>, +); + test("with empty should succeed", async () => { const [actual] = bodyMaxLineLength(await parsed.empty, undefined, value); const expected = true; @@ -40,13 +58,41 @@ test("with long should fail", async () => { }); test("with short with multiple lines should succeed", async () => { - const [actual] = bodyMaxLineLength(await parsed.short, undefined, value); + const [actual] = bodyMaxLineLength( + await parsed.shortMultipleLines, + undefined, + value, + ); const expected = true; expect(actual).toEqual(expected); }); test("with long with multiple lines should fail", async () => { - const [actual] = bodyMaxLineLength(await parsed.long, undefined, value); + const [actual] = bodyMaxLineLength( + await parsed.longMultipleLines, + undefined, + value, + ); const expected = false; expect(actual).toEqual(expected); }); + +test("with multiple lines and standalone URL should succeed", async () => { + const [actual] = bodyMaxLineLength( + await parsed.urlStandalone, + undefined, + value, + ); + const expected = true; + expect(actual).toEqual(expected); +}); + +test("with multiple lines and URL in inline Markdown link should succeed", async () => { + const [actual] = bodyMaxLineLength( + await parsed.urlMarkdownLinkInline, + undefined, + 30, + ); + const expected = true; + expect(actual).toEqual(expected); +}); diff --git a/@commitlint/rules/src/breaking-change-exclamation-mark.test.ts b/@commitlint/rules/src/breaking-change-exclamation-mark.test.ts new file mode 100644 index 0000000000..7d7b9c5377 --- /dev/null +++ b/@commitlint/rules/src/breaking-change-exclamation-mark.test.ts @@ -0,0 +1,85 @@ +import { test, expect } from "vitest"; +import parse from "@commitlint/parse"; +import { breakingChangeExclamationMark } from "./breaking-change-exclamation-mark.js"; + +const noHeader = "commit message"; +const plainHeader = "type: subject"; +const breakingHeader = "type!: subject"; +const noFooter = ""; +const plainFooter = "Some-Other-Trailer: content"; +const breakingFooter = "BREAKING CHANGE: reason"; + +// These are equivalence partitions. +const messages = { + noHeaderNoFooter: `${noHeader}\n\n${noFooter}`, + noHeaderPlainFooter: `${noHeader}\n\n${plainFooter}`, + noHeaderBreakingFooter: `${noHeader}\n\n${breakingFooter}`, + plainHeaderPlainFooter: `${plainHeader}\n\n${plainFooter}`, + plainHeaderBreakingFooter: `${plainHeader}\n\n${breakingFooter}`, + breakingHeaderPlainFooter: `${breakingHeader}\n\n${plainFooter}`, + breakingHeaderBreakingFooter: `${breakingHeader}\n\n${breakingFooter}`, +}; + +const parsed = { + noHeaderNoFooter: parse(messages.noHeaderNoFooter), + noHeaderPlainFooter: parse(messages.noHeaderPlainFooter), + noHeaderBreakingFooter: parse(messages.noHeaderBreakingFooter), + plainHeaderPlainFooter: parse(messages.plainHeaderPlainFooter), + plainHeaderBreakingFooter: parse(messages.plainHeaderBreakingFooter), + breakingHeaderPlainFooter: parse(messages.breakingHeaderPlainFooter), + breakingHeaderBreakingFooter: parse(messages.breakingHeaderBreakingFooter), +}; + +test("with noHeaderNoFooter should succeed", async () => { + const [actual] = breakingChangeExclamationMark(await parsed.noHeaderNoFooter); + const expected = true; + expect(actual).toEqual(expected); +}); + +test("with noHeaderPlainFooter should succeed", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.noHeaderPlainFooter, + ); + const expected = true; + expect(actual).toEqual(expected); +}); + +test("with noHeaderBreakingFooter should fail", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.noHeaderBreakingFooter, + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test("with plainHeaderPlainFooter should succeed", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.plainHeaderPlainFooter, + ); + const expected = true; + expect(actual).toEqual(expected); +}); + +test("with plainHeaderBreakingFooter should fail", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.plainHeaderBreakingFooter, + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test("with breakingHeaderPlainFooter should fail", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.breakingHeaderPlainFooter, + ); + const expected = false; + expect(actual).toEqual(expected); +}); + +test("with breakingHeaderBreakingFooter should succeed", async () => { + const [actual] = breakingChangeExclamationMark( + await parsed.breakingHeaderBreakingFooter, + ); + const expected = true; + expect(actual).toEqual(expected); +}); diff --git a/@commitlint/rules/src/breaking-change-exclamation-mark.ts b/@commitlint/rules/src/breaking-change-exclamation-mark.ts new file mode 100644 index 0000000000..131d5fac3b --- /dev/null +++ b/@commitlint/rules/src/breaking-change-exclamation-mark.ts @@ -0,0 +1,36 @@ +import message from "@commitlint/message"; +import { SyncRule } from "@commitlint/types"; + +export const breakingChangeExclamationMark: SyncRule = ( + parsed, + when = "always", +) => { + const header = parsed.header; + const footer = parsed.footer; + + // It is the correct behavior to return true only when both the header and footer are empty, + // but still run the usual checks if one or neither are empty. + // The reasoning is that if one is empty and the other contains a breaking change marker, + // then the check fails as it is not possible for the empty one to indicate a breaking change. + if (!header && !footer) { + return [true]; + } + + const hasExclamationMark = + !!header && /^(\w*)(?:\((.*)\))?!: (.*)$/.test(header); + const hasBreakingChange = !!footer && /^BREAKING[ -]CHANGE:/m.test(footer); + + const negated = when === "never"; + const check = hasExclamationMark === hasBreakingChange; + + return [ + negated ? !check : check, + message([ + "breaking changes", + negated ? "must not" : "must", + "have both an exclamation mark in the header", + "and BREAKING CHANGE in the footer", + "to identify a breaking change", + ]), + ]; +}; diff --git a/@commitlint/rules/src/index.ts b/@commitlint/rules/src/index.ts index 0a27f0b81a..95e7a9c86d 100644 --- a/@commitlint/rules/src/index.ts +++ b/@commitlint/rules/src/index.ts @@ -1,3 +1,4 @@ +import { breakingChangeExclamationMark } from "./breaking-change-exclamation-mark.js"; import { bodyCase } from "./body-case.js"; import { bodyEmpty } from "./body-empty.js"; import { bodyFullStop } from "./body-full-stop.js"; @@ -43,6 +44,7 @@ export default { "body-max-length": bodyMaxLength, "body-max-line-length": bodyMaxLineLength, "body-min-length": bodyMinLength, + "breaking-change-exclamation-mark": breakingChangeExclamationMark, "footer-empty": footerEmpty, "footer-leading-blank": footerLeadingBlank, "footer-max-length": footerMaxLength, @@ -62,10 +64,10 @@ export default { "signed-off-by": signedOffBy, "subject-case": subjectCase, "subject-empty": subjectEmpty, + "subject-exclamation-mark": subjectExclamationMark, "subject-full-stop": subjectFullStop, "subject-max-length": subjectMaxLength, "subject-min-length": subjectMinLength, - "subject-exclamation-mark": subjectExclamationMark, "trailer-exists": trailerExists, "type-case": typeCase, "type-empty": typeEmpty, diff --git a/@commitlint/rules/src/subject-exclamation-mark.ts b/@commitlint/rules/src/subject-exclamation-mark.ts index 19bf8eacca..886d142f9c 100644 --- a/@commitlint/rules/src/subject-exclamation-mark.ts +++ b/@commitlint/rules/src/subject-exclamation-mark.ts @@ -8,7 +8,7 @@ export const subjectExclamationMark: SyncRule = (parsed, when = "always") => { } const negated = when === "never"; - const hasExclamationMark = /!:/.test(input); + const hasExclamationMark = /^(\w*)(?:\((.*)\))?!: (.*)$/.test(input); return [ negated ? !hasExclamationMark : hasExclamationMark, diff --git a/@commitlint/to-lines/CHANGELOG.md b/@commitlint/to-lines/CHANGELOG.md index 0474117610..975274248b 100644 --- a/@commitlint/to-lines/CHANGELOG.md +++ b/@commitlint/to-lines/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/to-lines + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/to-lines diff --git a/@commitlint/to-lines/package.json b/@commitlint/to-lines/package.json index 20bdcd7b00..cf4b62751d 100644 --- a/@commitlint/to-lines/package.json +++ b/@commitlint/to-lines/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/to-lines", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -36,7 +36,7 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/top-level/CHANGELOG.md b/@commitlint/top-level/CHANGELOG.md index 2e88884518..326a0ef33a 100644 --- a/@commitlint/top-level/CHANGELOG.md +++ b/@commitlint/top-level/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/top-level + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/top-level diff --git a/@commitlint/top-level/package.json b/@commitlint/top-level/package.json index b00e617d67..4c48c1557a 100644 --- a/@commitlint/top-level/package.json +++ b/@commitlint/top-level/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/top-level", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Lint your commit messages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -36,7 +36,7 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "dependencies": { "find-up": "^7.0.0" diff --git a/@commitlint/travis-cli/CHANGELOG.md b/@commitlint/travis-cli/CHANGELOG.md index ef8c027767..579b28545c 100644 --- a/@commitlint/travis-cli/CHANGELOG.md +++ b/@commitlint/travis-cli/CHANGELOG.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + +**Note:** Version bump only for package @commitlint/travis-cli + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/travis-cli + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) diff --git a/@commitlint/travis-cli/package.json b/@commitlint/travis-cli/package.json index 1d92d8ef3a..ed08b7cf2b 100644 --- a/@commitlint/travis-cli/package.json +++ b/@commitlint/travis-cli/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/travis-cli", "type": "module", - "version": "19.8.1", + "version": "20.1.0", "description": "Lint all relevant commits for a change or PR on Travis CI", "main": "lib/cli.js", "types": "lib/cli.d.ts", @@ -39,11 +39,11 @@ }, "license": "MIT", "devDependencies": { - "@commitlint/test": "^19.8.1", - "@commitlint/utils": "^19.8.1" + "@commitlint/test": "^20.0.0", + "@commitlint/utils": "^20.0.0" }, "dependencies": { - "@commitlint/cli": "^19.8.1", + "@commitlint/cli": "^20.1.0", "tinyexec": "^1.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" diff --git a/@commitlint/types/CHANGELOG.md b/@commitlint/types/CHANGELOG.md index 77b15e9ba4..4063f69695 100644 --- a/@commitlint/types/CHANGELOG.md +++ b/@commitlint/types/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/types + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package @commitlint/types diff --git a/@commitlint/types/package.json b/@commitlint/types/package.json index eebefc6ba7..7388a48dd6 100644 --- a/@commitlint/types/package.json +++ b/@commitlint/types/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/types", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Shared types for commitlint packages", "main": "lib/index.js", "types": "lib/index.d.ts", @@ -33,7 +33,7 @@ "chalk": "^5.3.0" }, "devDependencies": { - "@commitlint/utils": "^19.8.1" + "@commitlint/utils": "^20.0.0" }, "gitHead": "e82f05a737626bb69979d14564f5ff601997f679" } diff --git a/@commitlint/types/src/prompt.ts b/@commitlint/types/src/prompt.ts index 92cada6bde..c426434d13 100644 --- a/@commitlint/types/src/prompt.ts +++ b/@commitlint/types/src/prompt.ts @@ -34,6 +34,7 @@ export type PromptConfig = { emoji?: string; }; }; + emojiInHeader?: boolean; } > >; diff --git a/@commitlint/types/src/rules.ts b/@commitlint/types/src/rules.ts index 3d8f2bcdb2..533e5416df 100644 --- a/@commitlint/types/src/rules.ts +++ b/@commitlint/types/src/rules.ts @@ -97,6 +97,7 @@ export type RulesConfig = { "body-max-length": LengthRuleConfig; "body-max-line-length": LengthRuleConfig; "body-min-length": LengthRuleConfig; + "breaking-change-exclamation-mark": CaseRuleConfig; "footer-empty": RuleConfig; "footer-leading-blank": RuleConfig; "footer-max-length": LengthRuleConfig; diff --git a/@packages/test-environment/CHANGELOG.md b/@packages/test-environment/CHANGELOG.md index 7bd2ed6019..5a0b754738 100644 --- a/@packages/test-environment/CHANGELOG.md +++ b/@packages/test-environment/CHANGELOG.md @@ -3,6 +3,25 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package vitest-environment-commitlint + + + + + +# [19.9.0](https://github.com/conventional-changelog/commitlint/compare/v19.8.1...v19.9.0) (2025-08-26) + + +### Bug Fixes + +* update dependency jest-environment-node to v30 ([#4448](https://github.com/conventional-changelog/commitlint/issues/4448)) ([42ca849](https://github.com/conventional-changelog/commitlint/commit/42ca849db3581bb5b7f1bbbcd0dfeda912566e5d)) + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) **Note:** Version bump only for package vitest-environment-commitlint diff --git a/@packages/test-environment/package.json b/@packages/test-environment/package.json index 05ac26f92b..75d6d66b4b 100644 --- a/@packages/test-environment/package.json +++ b/@packages/test-environment/package.json @@ -1,7 +1,7 @@ { "name": "vitest-environment-commitlint", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "test environment for @commitlint", "private": true, "main": "lib/test-environment.js", diff --git a/@packages/test/CHANGELOG.md b/@packages/test/CHANGELOG.md index bf3b6a27aa..229303a1d4 100644 --- a/@packages/test/CHANGELOG.md +++ b/@packages/test/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/test + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) diff --git a/@packages/test/package.json b/@packages/test/package.json index 14774027b4..629771d7b5 100644 --- a/@packages/test/package.json +++ b/@packages/test/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/test", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "test utilities for @commitlint", "private": true, "main": "lib/index.js", diff --git a/@packages/utils/CHANGELOG.md b/@packages/utils/CHANGELOG.md index b951e520fe..3ccd55a0b5 100644 --- a/@packages/utils/CHANGELOG.md +++ b/@packages/utils/CHANGELOG.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + +**Note:** Version bump only for package @commitlint/utils + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) diff --git a/@packages/utils/package.json b/@packages/utils/package.json index 5f5fca3bdd..7c26083e6c 100644 --- a/@packages/utils/package.json +++ b/@packages/utils/package.json @@ -1,7 +1,7 @@ { "name": "@commitlint/utils", "type": "module", - "version": "19.8.1", + "version": "20.0.0", "description": "Development utilities for @commitlint", "private": true, "files": [ diff --git a/CHANGELOG.md b/CHANGELOG.md index 3365b8e3b7..27d8b8092c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,78 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +# [20.1.0](https://github.com/conventional-changelog/commitlint/compare/v20.0.0...v20.1.0) (2025-09-30) + + +### Bug Fixes + +* **resolve-extends:** add import attribute for JSON config files ([#4551](https://github.com/conventional-changelog/commitlint/issues/4551)) ([82936c9](https://github.com/conventional-changelog/commitlint/commit/82936c90a2845b4f5721eef3c71d6183416d5b78)) + + +### Features + +* **config-pnpm-scopes:** allow global scope ([#4553](https://github.com/conventional-changelog/commitlint/issues/4553)) ([e571970](https://github.com/conventional-changelog/commitlint/commit/e57197061447eb9ea74b8d81ab003ad3b4652be6)) + + + + + +# [20.0.0](https://github.com/conventional-changelog/commitlint/compare/v19.9.1...v20.0.0) (2025-09-25) + + +### Bug Fixes + +* update dependency tar-fs to v3.1.1 [security] ([#4550](https://github.com/conventional-changelog/commitlint/issues/4550)) ([273a43e](https://github.com/conventional-changelog/commitlint/commit/273a43e359fc04b7b8f4b4949ec7ecc07718b786)) + + +* feat(rules)!: make body-max-line-length ignore lines with URLs (#4486) ([2f37a88](https://github.com/conventional-changelog/commitlint/commit/2f37a886be4b07bcd8e1126cc6a13256e7b6cc37)), closes [#4486](https://github.com/conventional-changelog/commitlint/issues/4486) + + +### BREAKING CHANGES + +* when lines contain URLs exceeding the maximum +line length `body-max-line-length` will be ignored + + + + + +## [19.9.1](https://github.com/conventional-changelog/commitlint/compare/v19.9.0...v19.9.1) (2025-08-29) + + +### Bug Fixes + +* add TypeScript support and configuration for pnpm scopes ([#4544](https://github.com/conventional-changelog/commitlint/issues/4544)) ([ea75778](https://github.com/conventional-changelog/commitlint/commit/ea75778e8d32c932d85062902456cd821e471fdd)) + + + + + +# [19.9.0](https://github.com/conventional-changelog/commitlint/compare/v19.8.1...v19.9.0) (2025-08-26) + + +### Bug Fixes + +* update dependency jest-environment-node to v30 ([#4448](https://github.com/conventional-changelog/commitlint/issues/4448)) ([42ca849](https://github.com/conventional-changelog/commitlint/commit/42ca849db3581bb5b7f1bbbcd0dfeda912566e5d)) +* update dependency jest-environment-node to v30.0.2 ([#4469](https://github.com/conventional-changelog/commitlint/issues/4469)) ([4da7e43](https://github.com/conventional-changelog/commitlint/commit/4da7e43be4134cbc01f847f82ef438fdfcc6dda9)) +* update dependency tar-fs to v3.0.10 ([#4461](https://github.com/conventional-changelog/commitlint/issues/4461)) ([f02c47c](https://github.com/conventional-changelog/commitlint/commit/f02c47c669055f3ce6f0f4ba553d4a5ed4e1ee57)) +* update dependency tar-fs to v3.0.9 ([#4421](https://github.com/conventional-changelog/commitlint/issues/4421)) ([0650e03](https://github.com/conventional-changelog/commitlint/commit/0650e03d960eb904c40a3faf4c8d24415807bbdd)) +* update dependency tar-fs to v3.1.0 ([#4496](https://github.com/conventional-changelog/commitlint/issues/4496)) ([31b4f72](https://github.com/conventional-changelog/commitlint/commit/31b4f72d2fdca5094b1325bdac7bcd5c5693c423)) + + +### Features + +* **config-pnpm-scopes:** migrate package to TypeScript ([#4541](https://github.com/conventional-changelog/commitlint/issues/4541)) ([6ae36ea](https://github.com/conventional-changelog/commitlint/commit/6ae36ea5a55d7736024461ec6af94a14b821acc4)) + + +### Reverts + +* Revert "chore: update dependency cross-env to v10 (#4528)" (#4529) ([b5bfd12](https://github.com/conventional-changelog/commitlint/commit/b5bfd125140c5a7a6bcdefb9c3d22b7c13e3ea17)), closes [#4528](https://github.com/conventional-changelog/commitlint/issues/4528) [#4529](https://github.com/conventional-changelog/commitlint/issues/4529) + + + + + ## [19.8.1](https://github.com/conventional-changelog/commitlint/compare/v19.8.0...v19.8.1) (2025-05-08) diff --git a/Dockerfile.ci b/Dockerfile.ci index 04d59cb622..3b9351355c 100644 --- a/Dockerfile.ci +++ b/Dockerfile.ci @@ -8,6 +8,7 @@ RUN yarn install --frozen-lockfile --network-timeout 100000 && \ # Commit lint CLI packages npm pack @commitlint/cli && \ npm pack @commitlint/config-validator && \ + npm pack @commitlint/config-pnpm-scopes && \ npm pack @commitlint/config-nx-scopes && \ npm pack @commitlint/ensure && \ npm pack @commitlint/execute-rule && \ diff --git a/docs/public/assets/cz-commitlint.png b/docs/public/assets/cz-commitlint.png index 35098c26f1..3c808656d7 100644 Binary files a/docs/public/assets/cz-commitlint.png and b/docs/public/assets/cz-commitlint.png differ diff --git a/docs/public/assets/vs-code-commit-msg.png b/docs/public/assets/vs-code-commit-msg.png new file mode 100644 index 0000000000..2c93243238 Binary files /dev/null and b/docs/public/assets/vs-code-commit-msg.png differ diff --git a/docs/public/assets/vs-code-emoji.png b/docs/public/assets/vs-code-emoji.png new file mode 100644 index 0000000000..fbea05cd9a Binary files /dev/null and b/docs/public/assets/vs-code-emoji.png differ diff --git a/docs/reference/configuration.md b/docs/reference/configuration.md index 25b499b00e..b9a332202c 100644 --- a/docs/reference/configuration.md +++ b/docs/reference/configuration.md @@ -21,7 +21,7 @@ The file is expected -- to contain valid JavaScript / Typescript +- to contain valid JavaScript / TypeScript - export a configuration object - adhere to the schema outlined below @@ -105,9 +105,9 @@ export default Configuration; > module.exports = Configuration; > ``` -### Typescript configuration +### TypeScript configuration -Configuration can also be a typescript file. +Configuration can also be a TypeScript file. Relevant types and enums can be imported from `@commitlint/types`. diff --git a/docs/reference/examples.md b/docs/reference/examples.md index 773b4048ab..4d80227b88 100644 --- a/docs/reference/examples.md +++ b/docs/reference/examples.md @@ -22,3 +22,132 @@ These examples show common usages of how commitlint can be configured. // ... } ``` + +::: + +## Customizing Emojis and Alignment in VS Code + +Some terminals have trouble correctly calculating the width of Unicode emojis, which can cause a missing space after the emoji, leading to misaligned text in the commit prompt. + +![cz-commitlint questions](/assets/vs-code-emoji.png) + +To fix this issue in VS Code, you can specify an additional space after each emoji in your `commitlint.config.ts` file. + +::: code-group + +```ts [commitlint.config.ts] +import { type UserConfig } from "@commitlint/types"; + +export default { + // Use the conventional commit rules as a base. + extends: ["@commitlint/config-conventional"], + prompt: { + questions: { + type: { + enum: { + // Add a space to a few common types for better alignment. + build: { + emoji: "🛠️ ", // The extra space fixes the alignment. + }, + chore: { + emoji: "♻️ ", + }, + ci: { + emoji: "⚙️ ", + }, + revert: { + emoji: "🗑️ ", + }, + }, + }, + }, + }, +} satisfies UserConfig; +``` + +::: + +## Include Emojis in Commit Messages + +By default, emojis are only shown in the commit message prompt. To include them in the actual commit header, you need a custom parser and a setting to enable them. + +This configuration is based on the conventional commit rules and uses a _parser preset_ to validate commit headers that start with an emoji. + +::: code-group + +```ts [commitlint.config.ts] +import type { ParserPreset, UserConfig } from "@commitlint/types"; +import config from "@commitlint/config-conventional"; +import createPreset from "conventional-changelog-conventionalcommits"; +import { merge } from "lodash-es"; + +// A helper function to create the custom emoji parser preset. +async function createEmojiParser(): Promise { + // Generates the regex from the emojis defined in the conventional config. + const emojiRegexPart = Object.values(config.prompt.questions.type.enum) + .map((value) => value.emoji.trim()) + .join("|"); + + const parserOpts = { + // This regular expression validates commit headers with an emoji. + breakingHeaderPattern: new RegExp( + `^(?:${emojiRegexPart})\\s+(\\w*)(?:\\((.*)\\))?!:\\s+(.*)$`, + ), + headerPattern: new RegExp( + `^(?:${emojiRegexPart})\\s+(\\w*)(?:\\((.*)\\))?!?:\\s+(.*)$`, + ), + }; + + const emojiParser = merge({}, await createPreset(), { + conventionalChangelog: { parserOpts }, + parserOpts, + recommendedBumpOpts: { parserOpts }, + }); + + return emojiParser; +} + +const emojiParser = await createEmojiParser(); + +export default { + extends: ["@commitlint/config-conventional"], + parserPreset: emojiParser, + prompt: { + questions: { + type: { + enum: { + // Customize emojis and add the extra space for better alignment. + build: { emoji: "🛠️ " }, + chore: { emoji: "♻️ " }, + ci: { emoji: "⚙️ " }, + revert: { emoji: "🗑️ " }, + }, + // This setting includes the emoji in the final commit header. + headerWithEmoji: true, + }, + }, + }, +} satisfies UserConfig; +``` + +::: + +Although some emojis may appear without a trailing space in the terminal, the commit message itself is submitted with the correct formatting. + +![cz-commitlint questions](/assets/vs-code-commit-msg.png) + +You can verify this with `git log -4 --format=%B > commits.txt`. + +:::code-group + +```text [commits.txt] +⚙️ ci(scope): short + +🛠 build(scope): short + +🐛 fix(scope): short + +✨ feat(scope): short +``` + +::: diff --git a/docs/reference/rules.md b/docs/reference/rules.md index 8180e753e0..7c76fafcd7 100644 --- a/docs/reference/rules.md +++ b/docs/reference/rules.md @@ -1,5 +1,35 @@ # Rules +## body-case + +- **condition**: `body` is in case `value` +- **rule**: `always` +- **value** + + ```text + 'lower-case' + ``` + +- **possible values** + + ```js + [ + "lower-case", // default + "upper-case", // UPPERCASE + "camel-case", // camelCase + "kebab-case", // kebab-case + "pascal-case", // PascalCase + "sentence-case", // Sentence case + "snake-case", // snake_case + "start-case", // Start Case + ]; + ``` + +## body-empty + +- **condition**: `body` is empty +- **rule**: `never` + ## body-full-stop - **condition**: `body` ends with `value` @@ -15,11 +45,6 @@ - **condition**: `body` begins with blank line - **rule**: `always` -## body-empty - -- **condition**: `body` is empty -- **rule**: `never` - ## body-max-length - **condition**: `body` has `value` or less characters @@ -32,7 +57,7 @@ ## body-max-line-length -- **condition**: `body` lines has `value` or less characters +- **condition**: `body` lines have `value` or less characters, or contain a URL - **rule**: `always` - **value** @@ -50,41 +75,30 @@ 0 ``` -## body-case +## breaking-change-exclamation-mark -- **condition**: `body` is in case `value` +- **condition**: Either both or neither `header` has an exclamation mark before the `:` marker + and a line in `footer` matches the regular expression `^BREAKING[ -]CHANGE:` - **rule**: `always` -- **value** - ```text - 'lower-case' - ``` +> [!NOTE] +> +> This rule enforces that breaking changes are marked by both a `!` in the header +> and `BREAKING CHANGE` in the footer. The behavior is that of an XNOR operation: +> +> - It passes when either both are present or both are not. +> - It fails when one is present and the other is not. -- **possible values** +## footer-empty - ```js - [ - "lower-case", // default - "upper-case", // UPPERCASE - "camel-case", // camelCase - "kebab-case", // kebab-case - "pascal-case", // PascalCase - "sentence-case", // Sentence case - "snake-case", // snake_case - "start-case", // Start Case - ]; - ``` +- **condition**: `footer` is empty +- **rule**: `never` ## footer-leading-blank - **condition**: `footer` begins with blank line - **rule**: `always` -## footer-empty - -- **condition**: `footer` is empty -- **rule**: `never` - ## footer-max-length - **condition**: `footer` has `value` or less characters @@ -97,7 +111,7 @@ ## footer-max-line-length -- **condition**: `footer` lines has `value` or less characters +- **condition**: `footer` lines have `value` or less characters - **rule**: `always` - **value** @@ -172,7 +186,7 @@ ## header-trim -- **condition**: `header` must not have initial and / or trailing whitespaces +- **condition**: `header` must not have initial or trailing whitespaces - **rule**: `always` ## references-empty @@ -180,6 +194,36 @@ - **condition**: `references` has at least one entry - **rule**: `never` +## scope-case + +- **condition**: `scope` is in case `value` +- **rule**: `always` +- **value** + + ```text + 'lower-case' + ``` + +- **possible values** + + ```js + [ + "lower-case", // default + "upper-case", // UPPERCASE + "camel-case", // camelCase + "kebab-case", // kebab-case + "pascal-case", // PascalCase + "sentence-case", // Sentence case + "snake-case", // snake_case + "start-case", // Start Case + ]; + ``` + +## scope-empty + +- **condition**: `scope` is empty +- **rule**: `never` + ## scope-enum - **condition**: `scope` is found in value @@ -196,55 +240,35 @@ > - When set to `always`, all message scopes must be found in the value. > - When set to `never`, none of the message scopes can be found in the value. -## scope-case +## scope-max-length -- **condition**: `scope` is in case `value` +- **condition**: `scope` has `value` or less characters - **rule**: `always` - **value** ```text - 'lower-case' + Infinity ``` -- **possible values** - -```js -[ - "lower-case", // default - "upper-case", // UPPERCASE - "camel-case", // camelCase - "kebab-case", // kebab-case - "pascal-case", // PascalCase - "sentence-case", // Sentence case - "snake-case", // snake_case - "start-case", // Start Case -]; -``` - -## scope-empty - -- **condition**: `scope` is empty -- **rule**: `never` - -## scope-max-length +## scope-min-length -- **condition**: `scope` has `value` or less characters +- **condition**: `scope` has `value` or more characters - **rule**: `always` - **value** -```text -Infinity -``` + ```text + 0 + ``` -## scope-min-length +## signed-off-by -- **condition**: `scope` has `value` or more characters +- **condition**: `message` has `value` - **rule**: `always` - **value** -```text -0 -``` + ```text + 'Signed-off-by:' + ``` ## subject-case @@ -252,39 +276,44 @@ Infinity - **rule**: `always` - **value** -```js -["sentence-case", "start-case", "pascal-case", "upper-case"]; -``` + ```js + ["sentence-case", "start-case", "pascal-case", "upper-case"]; + ``` - **possible values** -```js -[ - "lower-case", // lower case - "upper-case", // UPPERCASE - "camel-case", // camelCase - "kebab-case", // kebab-case - "pascal-case", // PascalCase - "sentence-case", // Sentence case - "snake-case", // snake_case - "start-case", // Start Case -]; -``` + ```js + [ + "lower-case", // lower case + "upper-case", // UPPERCASE + "camel-case", // camelCase + "kebab-case", // kebab-case + "pascal-case", // PascalCase + "sentence-case", // Sentence case + "snake-case", // snake_case + "start-case", // Start Case + ]; + ``` ## subject-empty - **condition**: `subject` is empty - **rule**: `never` +## subject-exclamation-mark + +- **condition**: `subject` has exclamation before the `:` marker +- **rule**: `never` + ## subject-full-stop - **condition**: `subject` ends with `value` - **rule**: `never` - **value** -```text -'.' -``` + ```text + '.' + ``` ## subject-max-length @@ -292,9 +321,9 @@ Infinity - **rule**: `always` - **value** -```text -Infinity -``` + ```text + Infinity + ``` ## subject-min-length @@ -302,35 +331,18 @@ Infinity - **rule**: `always` - **value** -```text -0 -``` - -## subject-exclamation-mark - -- **condition**: `subject` has exclamation before the `:` marker -- **rule**: `never` + ```text + 0 + ``` -## type-enum +## trailer-exists -- **condition**: `type` is found in value +- **condition**: `message` has trailer `value` - **rule**: `always` - **value** - ```js - [ - "build", - "chore", - "ci", - "docs", - "feat", - "fix", - "perf", - "refactor", - "revert", - "style", - "test", - ]; + ```text + 'Signed-off-by:' ``` ## type-case @@ -363,42 +375,44 @@ Infinity - **condition**: `type` is empty - **rule**: `never` -## type-max-length - -- **condition**: `type` has `value` or less characters -- **rule**: `always` -- **value** - - ```text - Infinity - ``` - -## type-min-length +## type-enum -- **condition**: `type` has `value` or more characters +- **condition**: `type` is found in value - **rule**: `always` - **value** - ```text - 0 + ```js + [ + "build", + "chore", + "ci", + "docs", + "feat", + "fix", + "perf", + "refactor", + "revert", + "style", + "test", + ]; ``` -## signed-off-by +## type-max-length -- **condition**: `message` has `value` +- **condition**: `type` has `value` or less characters - **rule**: `always` - **value** ```text - 'Signed-off-by:' + Infinity ``` -## trailer-exists +## type-min-length -- **condition**: `message` has trailer `value` +- **condition**: `type` has `value` or more characters - **rule**: `always` - **value** ```text - 'Signed-off-by:' + 0 ``` diff --git a/eslint.config.mjs b/eslint.config.mjs index 7c94b7b58a..679b906c09 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -1,13 +1,13 @@ import typescriptEslint from '@typescript-eslint/eslint-plugin'; -import {createTypeScriptImportResolver} from 'eslint-import-resolver-typescript'; -import jest from 'eslint-plugin-jest'; -import {importX} from 'eslint-plugin-import-x'; +import { createTypeScriptImportResolver } from 'eslint-import-resolver-typescript'; +import vitest from '@vitest/eslint-plugin'; +import { importX } from 'eslint-plugin-import-x'; import globals from 'globals'; import tsParser from '@typescript-eslint/parser'; import path from 'node:path'; -import {fileURLToPath} from 'node:url'; +import { fileURLToPath } from 'node:url'; import js from '@eslint/js'; -import {FlatCompat} from '@eslint/eslintrc'; +import { FlatCompat } from '@eslint/eslintrc'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); @@ -19,25 +19,22 @@ const compat = new FlatCompat({ export default [ { - ignores: ['**/lib/', '**/coverage/', '**/node_modules/', '**/fixtures/'], + ignores: ['**/lib/', '**/coverage/', '**/node_modules/', '**/fixtures/', '**/dist/'], }, importX.flatConfigs.typescript, ...compat.extends('eslint:recommended', 'prettier'), { plugins: { '@typescript-eslint': typescriptEslint, - jest, }, - settings: { 'import-x/resolver-next': createTypeScriptImportResolver(), }, - languageOptions: { globals: { ...globals.node, + ...vitest.environments.env.globals }, - ecmaVersion: 11, sourceType: 'module', @@ -47,7 +44,6 @@ export default [ }, }, }, - rules: { 'import-x/first': 'error', 'import-x/no-absolute-path': 'error', @@ -55,7 +51,6 @@ export default [ 'import-x/no-mutable-exports': 'error', 'import-x/no-named-default': 'error', 'import-x/no-self-import': 'error', - 'import-x/no-extraneous-dependencies': [ 'error', { @@ -76,11 +71,9 @@ export default [ })), { files: ['**/*.cts', '**/*.ts'], - languageOptions: { parser: tsParser, }, - rules: { '@typescript-eslint/no-unused-vars': 'off', '@typescript-eslint/no-use-before-define': 'off', @@ -94,19 +87,18 @@ export default [ 'no-var': 'off', }, }, - ...compat.extends('plugin:jest/recommended').map((config) => ({ - ...config, - files: ['**/*.test.ts', '**/*.test.js'], - })), { files: ['**/*.test.ts', '**/*.test.js'], - + plugins: { + vitest, + }, rules: { + ...vitest.configs.recommended.rules, + 'vitest/max-nested-describe': ['error', { max: 3 }], '@typescript-eslint/no-explicit-any': 'off', '@typescript-eslint/no-var-requires': 'off', 'import-x/first': 'off', 'import-x/no-extraneous-dependencies': 'off', - 'jest/no-deprecated-functions': 'off', }, }, ]; diff --git a/lerna.json b/lerna.json index 0a63b90177..b007de9a8f 100644 --- a/lerna.json +++ b/lerna.json @@ -1,4 +1,4 @@ { "npmClient": "yarn", - "version": "19.8.1" + "version": "20.1.0" } diff --git a/package.json b/package.json index 8b79499d86..52b962b4e0 100644 --- a/package.json +++ b/package.json @@ -88,12 +88,12 @@ "@typescript-eslint/eslint-plugin": "^8.18.0", "@typescript-eslint/parser": "^8.18.0", "@vitest/coverage-istanbul": "^3.0.0", + "@vitest/eslint-plugin": "^1.3.4", "cross-env": "^7.0.3", "eslint": "^9.16.0", "eslint-config-prettier": "^10.0.0", "eslint-import-resolver-typescript": "^4.4.3", "eslint-plugin-import-x": "^4.15.2", - "eslint-plugin-jest": "^29.0.0", "globals": "^16.0.0", "husky": "^9.1.5", "lerna": "^8.2.0", diff --git a/tsconfig.json b/tsconfig.json index 90481ab49f..305b3ae79a 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -28,6 +28,7 @@ { "path": "@commitlint/travis-cli" }, { "path": "@commitlint/prompt" }, { "path": "@commitlint/cz-commitlint" }, - { "path": "@commitlint/config-conventional" } + { "path": "@commitlint/config-conventional" }, + { "path": "@commitlint/config-pnpm-scopes" } ] } diff --git a/yarn.lock b/yarn.lock index c574f131ce..ee8f87e867 100644 --- a/yarn.lock +++ b/yarn.lock @@ -352,116 +352,246 @@ resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz#c7184a326533fcdf1b8ee0733e21c713b975575f" integrity sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ== +"@esbuild/aix-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz#bef96351f16520055c947aba28802eede3c9e9a9" + integrity sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA== + "@esbuild/android-arm64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz#09d9b4357780da9ea3a7dfb833a1f1ff439b4052" integrity sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A== +"@esbuild/android-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz#d2e70be7d51a529425422091e0dcb90374c1546c" + integrity sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg== + "@esbuild/android-arm@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz#9b04384fb771926dfa6d7ad04324ecb2ab9b2e28" integrity sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg== +"@esbuild/android-arm@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz#d2a753fe2a4c73b79437d0ba1480e2d760097419" + integrity sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ== + "@esbuild/android-x64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz#29918ec2db754cedcb6c1b04de8cd6547af6461e" integrity sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA== +"@esbuild/android-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz#5278836e3c7ae75761626962f902a0d55352e683" + integrity sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw== + "@esbuild/darwin-arm64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz#e495b539660e51690f3928af50a76fb0a6ccff2a" integrity sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ== +"@esbuild/darwin-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz#f1513eaf9ec8fa15dcaf4c341b0f005d3e8b47ae" + integrity sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg== + "@esbuild/darwin-x64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz#c13838fa57372839abdddc91d71542ceea2e1e22" integrity sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw== +"@esbuild/darwin-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz#e27dbc3b507b3a1cea3b9280a04b8b6b725f82be" + integrity sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ== + "@esbuild/freebsd-arm64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz#646b989aa20bf89fd071dd5dbfad69a3542e550e" integrity sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g== +"@esbuild/freebsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz#364e3e5b7a1fd45d92be08c6cc5d890ca75908ca" + integrity sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q== + "@esbuild/freebsd-x64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz#aa615cfc80af954d3458906e38ca22c18cf5c261" integrity sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ== +"@esbuild/freebsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz#7c869b45faeb3df668e19ace07335a0711ec56ab" + integrity sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg== + "@esbuild/linux-arm64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz#70ac6fa14f5cb7e1f7f887bcffb680ad09922b5b" integrity sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q== +"@esbuild/linux-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz#48d42861758c940b61abea43ba9a29b186d6cb8b" + integrity sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw== + "@esbuild/linux-arm@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz#fc6fd11a8aca56c1f6f3894f2bea0479f8f626b9" integrity sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA== +"@esbuild/linux-arm@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz#6ce4b9cabf148274101701d112b89dc67cc52f37" + integrity sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw== + "@esbuild/linux-ia32@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz#3271f53b3f93e3d093d518d1649d6d68d346ede2" integrity sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg== +"@esbuild/linux-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz#207e54899b79cac9c26c323fc1caa32e3143f1c4" + integrity sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A== + "@esbuild/linux-loong64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz#ed62e04238c57026aea831c5a130b73c0f9f26df" integrity sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg== +"@esbuild/linux-loong64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz#0ba48a127159a8f6abb5827f21198b999ffd1fc0" + integrity sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ== + "@esbuild/linux-mips64el@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz#e79b8eb48bf3b106fadec1ac8240fb97b4e64cbe" integrity sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg== +"@esbuild/linux-mips64el@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz#a4d4cc693d185f66a6afde94f772b38ce5d64eb5" + integrity sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA== + "@esbuild/linux-ppc64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz#5f2203860a143b9919d383ef7573521fb154c3e4" integrity sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w== +"@esbuild/linux-ppc64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz#0f5805c1c6d6435a1dafdc043cb07a19050357db" + integrity sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w== + "@esbuild/linux-riscv64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz#07bcafd99322d5af62f618cb9e6a9b7f4bb825dc" integrity sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA== +"@esbuild/linux-riscv64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz#6776edece0f8fca79f3386398b5183ff2a827547" + integrity sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg== + "@esbuild/linux-s390x@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz#b7ccf686751d6a3e44b8627ababc8be3ef62d8de" integrity sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A== +"@esbuild/linux-s390x@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz#3f6f29ef036938447c2218d309dc875225861830" + integrity sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA== + "@esbuild/linux-x64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz#6d8f0c768e070e64309af8004bb94e68ab2bb3b0" integrity sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ== +"@esbuild/linux-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz#831fe0b0e1a80a8b8391224ea2377d5520e1527f" + integrity sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg== + +"@esbuild/netbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz#06f99d7eebe035fbbe43de01c9d7e98d2a0aa548" + integrity sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q== + "@esbuild/netbsd-x64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz#bbe430f60d378ecb88decb219c602667387a6047" integrity sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg== +"@esbuild/netbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz#db99858e6bed6e73911f92a88e4edd3a8c429a52" + integrity sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g== + +"@esbuild/openbsd-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz#afb886c867e36f9d86bb21e878e1185f5d5a0935" + integrity sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ== + "@esbuild/openbsd-x64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz#99d1cf2937279560d2104821f5ccce220cb2af70" integrity sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow== +"@esbuild/openbsd-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz#30855c9f8381fac6a0ef5b5f31ac6e7108a66ecf" + integrity sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA== + +"@esbuild/openharmony-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz#2f2144af31e67adc2a8e3705c20c2bd97bd88314" + integrity sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg== + "@esbuild/sunos-x64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz#08741512c10d529566baba837b4fe052c8f3487b" integrity sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg== +"@esbuild/sunos-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz#69b99a9b5bd226c9eb9c6a73f990fddd497d732e" + integrity sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw== + "@esbuild/win32-arm64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz#675b7385398411240735016144ab2e99a60fc75d" integrity sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A== +"@esbuild/win32-arm64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz#d789330a712af916c88325f4ffe465f885719c6b" + integrity sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ== + "@esbuild/win32-ia32@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz#1bfc3ce98aa6ca9a0969e4d2af72144c59c1193b" integrity sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA== +"@esbuild/win32-ia32@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz#52fc735406bd49688253e74e4e837ac2ba0789e3" + integrity sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww== + "@esbuild/win32-x64@0.21.5": version "0.21.5" resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz#acad351d582d157bb145535db2a6ff53dd514b5c" integrity sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw== +"@esbuild/win32-x64@0.25.9": + version "0.25.9" + resolved "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz#585624dc829cfb6e7c0aa6c3ca7d7e6daa87e34f" + integrity sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ== + "@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.7.0": version "4.7.0" resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" @@ -1182,101 +1312,206 @@ resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.43.0.tgz#9241b59af721beb7e3587a56c6c245d6c465753d" integrity sha512-Krjy9awJl6rKbruhQDgivNbD1WuLb8xAclM4IR4cN5pHGAs2oIMMQJEiC3IC/9TZJ+QZkmZhlMO/6MBGxPidpw== +"@rollup/rollup-android-arm-eabi@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.50.1.tgz#7d41dc45adcfcb272504ebcea9c8a5b2c659e963" + integrity sha512-HJXwzoZN4eYTdD8bVV22DN8gsPCAj3V20NHKOs8ezfXanGpmVPR7kalUHd+Y31IJp9stdB87VKPFbsGY3H/2ag== + "@rollup/rollup-android-arm64@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.43.0.tgz#f70ee53ba991fdd65c277b0716c559736d490a58" integrity sha512-ss4YJwRt5I63454Rpj+mXCXicakdFmKnUNxr1dLK+5rv5FJgAxnN7s31a5VchRYxCFWdmnDWKd0wbAdTr0J5EA== +"@rollup/rollup-android-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.50.1.tgz#6c708fae2c9755e994c42d56c34a94cb77020650" + integrity sha512-PZlsJVcjHfcH53mOImyt3bc97Ep3FJDXRpk9sMdGX0qgLmY0EIWxCag6EigerGhLVuL8lDVYNnSo8qnTElO4xw== + "@rollup/rollup-darwin-arm64@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.43.0.tgz#9f59000e817cf5760d87515ce899f8b93fe8756a" integrity sha512-eKoL8ykZ7zz8MjgBenEF2OoTNFAPFz1/lyJ5UmmFSz5jW+7XbH1+MAgCVHy72aG59rbuQLcJeiMrP8qP5d/N0A== +"@rollup/rollup-darwin-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.50.1.tgz#85ccf92ab114e434c83037a175923a525635cbb4" + integrity sha512-xc6i2AuWh++oGi4ylOFPmzJOEeAa2lJeGUGb4MudOtgfyyjr4UPNK+eEWTPLvmPJIY/pgw6ssFIox23SyrkkJw== + "@rollup/rollup-darwin-x64@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.43.0.tgz#c92aebd02725ae1b88bdce40f08f7823e8055c78" integrity sha512-SYwXJgaBYW33Wi/q4ubN+ldWC4DzQY62S4Ll2dgfr/dbPoF50dlQwEaEHSKrQdSjC6oIe1WgzosoaNoHCdNuMg== +"@rollup/rollup-darwin-x64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.50.1.tgz#0af089f3d658d05573208dabb3a392b44d7f4630" + integrity sha512-2ofU89lEpDYhdLAbRdeyz/kX3Y2lpYc6ShRnDjY35bZhd2ipuDMDi6ZTQ9NIag94K28nFMofdnKeHR7BT0CATw== + "@rollup/rollup-freebsd-arm64@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.43.0.tgz#b128dbe7b353922ddd729a4fc4e408ddcbf338b5" integrity sha512-SV+U5sSo0yujrjzBF7/YidieK2iF6E7MdF6EbYxNz94lA+R0wKl3SiixGyG/9Klab6uNBIqsN7j4Y/Fya7wAjQ== +"@rollup/rollup-freebsd-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.50.1.tgz#46c22a16d18180e99686647543335567221caa9c" + integrity sha512-wOsE6H2u6PxsHY/BeFHA4VGQN3KUJFZp7QJBmDYI983fgxq5Th8FDkVuERb2l9vDMs1D5XhOrhBrnqcEY6l8ZA== + "@rollup/rollup-freebsd-x64@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.43.0.tgz#88297a0ddfadddd61d7d9b73eb42b3f227301d30" integrity sha512-J7uCsiV13L/VOeHJBo5SjasKiGxJ0g+nQTrBkAsmQBIdil3KhPnSE9GnRon4ejX1XDdsmK/l30IYLiAaQEO0Cg== +"@rollup/rollup-freebsd-x64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.50.1.tgz#819ffef2f81891c266456952962a13110c8e28b5" + integrity sha512-A/xeqaHTlKbQggxCqispFAcNjycpUEHP52mwMQZUNqDUJFFYtPHCXS1VAG29uMlDzIVr+i00tSFWFLivMcoIBQ== + "@rollup/rollup-linux-arm-gnueabihf@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.43.0.tgz#a59afc092523ebe43d3899f33da9cdd2ec01fb87" integrity sha512-gTJ/JnnjCMc15uwB10TTATBEhK9meBIY+gXP4s0sHD1zHOaIh4Dmy1X9wup18IiY9tTNk5gJc4yx9ctj/fjrIw== +"@rollup/rollup-linux-arm-gnueabihf@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.50.1.tgz#7fe283c14793e607e653a3214b09f8973f08262a" + integrity sha512-54v4okehwl5TaSIkpp97rAHGp7t3ghinRd/vyC1iXqXMfjYUTm7TfYmCzXDoHUPTTf36L8pr0E7YsD3CfB3ZDg== + "@rollup/rollup-linux-arm-musleabihf@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.43.0.tgz#3095c1327b794bd187d03e372e633717fb69b4c0" integrity sha512-ZJ3gZynL1LDSIvRfz0qXtTNs56n5DI2Mq+WACWZ7yGHFUEirHBRt7fyIk0NsCKhmRhn7WAcjgSkSVVxKlPNFFw== +"@rollup/rollup-linux-arm-musleabihf@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.50.1.tgz#066e92eb22ea30560414ec800a6d119ba0b435ac" + integrity sha512-p/LaFyajPN/0PUHjv8TNyxLiA7RwmDoVY3flXHPSzqrGcIp/c2FjwPPP5++u87DGHtw+5kSH5bCJz0mvXngYxw== + "@rollup/rollup-linux-arm64-gnu@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.43.0.tgz#e43bb77df3a6de85312e991d1e3ad352d1abb00d" integrity sha512-8FnkipasmOOSSlfucGYEu58U8cxEdhziKjPD2FIa0ONVMxvl/hmONtX/7y4vGjdUhjcTHlKlDhw3H9t98fPvyA== +"@rollup/rollup-linux-arm64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.50.1.tgz#480d518ea99a8d97b2a174c46cd55164f138cc37" + integrity sha512-2AbMhFFkTo6Ptna1zO7kAXXDLi7H9fGTbVaIq2AAYO7yzcAsuTNWPHhb2aTA6GPiP+JXh85Y8CiS54iZoj4opw== + "@rollup/rollup-linux-arm64-musl@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.43.0.tgz#34873a437bcd87618f702dc66f0cbce170aebf9f" integrity sha512-KPPyAdlcIZ6S9C3S2cndXDkV0Bb1OSMsX0Eelr2Bay4EsF9yi9u9uzc9RniK3mcUGCLhWY9oLr6er80P5DE6XA== +"@rollup/rollup-linux-arm64-musl@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.50.1.tgz#ed7db3b8999b60dd20009ddf71c95f3af49423c8" + integrity sha512-Cgef+5aZwuvesQNw9eX7g19FfKX5/pQRIyhoXLCiBOrWopjo7ycfB292TX9MDcDijiuIJlx1IzJz3IoCPfqs9w== + "@rollup/rollup-linux-loongarch64-gnu@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.43.0.tgz#224ff524349e365baa56f1f512822548c2d76910" integrity sha512-HPGDIH0/ZzAZjvtlXj6g+KDQ9ZMHfSP553za7o2Odegb/BEfwJcR0Sw0RLNpQ9nC6Gy8s+3mSS9xjZ0n3rhcYg== +"@rollup/rollup-linux-loongarch64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.50.1.tgz#16a6927a35f5dbc505ff874a4e1459610c0c6f46" + integrity sha512-RPhTwWMzpYYrHrJAS7CmpdtHNKtt2Ueo+BlLBjfZEhYBhK00OsEqM08/7f+eohiF6poe0YRDDd8nAvwtE/Y62Q== + "@rollup/rollup-linux-powerpc64le-gnu@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.43.0.tgz#43c3c053b26ace18a1d3dab204596a466c1b0e34" integrity sha512-gEmwbOws4U4GLAJDhhtSPWPXUzDfMRedT3hFMyRAvM9Mrnj+dJIFIeL7otsv2WF3D7GrV0GIewW0y28dOYWkmw== +"@rollup/rollup-linux-ppc64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.50.1.tgz#a006700469be0041846c45b494c35754e6a04eea" + integrity sha512-eSGMVQw9iekut62O7eBdbiccRguuDgiPMsw++BVUg+1K7WjZXHOg/YOT9SWMzPZA+w98G+Fa1VqJgHZOHHnY0Q== + "@rollup/rollup-linux-riscv64-gnu@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.43.0.tgz#e7df825d71daefa7037605015455aa58be43cd7a" integrity sha512-XXKvo2e+wFtXZF/9xoWohHg+MuRnvO29TI5Hqe9xwN5uN8NKUYy7tXUG3EZAlfchufNCTHNGjEx7uN78KsBo0g== +"@rollup/rollup-linux-riscv64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.50.1.tgz#0fcc45b2ec8a0e54218ca48849ea6d596f53649c" + integrity sha512-S208ojx8a4ciIPrLgazF6AgdcNJzQE4+S9rsmOmDJkusvctii+ZvEuIC4v/xFqzbuP8yDjn73oBlNDgF6YGSXQ== + "@rollup/rollup-linux-riscv64-musl@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.43.0.tgz#d76ad93a7f4c0b2855a024d8d859196acf38acf5" integrity sha512-ruf3hPWhjw6uDFsOAzmbNIvlXFXlBQ4nk57Sec8E8rUxs/AI4HD6xmiiasOOx/3QxS2f5eQMKTAwk7KHwpzr/Q== +"@rollup/rollup-linux-riscv64-musl@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.50.1.tgz#d6e617eec9fe6f5859ee13fad435a16c42b469f2" + integrity sha512-3Ag8Ls1ggqkGUvSZWYcdgFwriy2lWo+0QlYgEFra/5JGtAd6C5Hw59oojx1DeqcA2Wds2ayRgvJ4qxVTzCHgzg== + "@rollup/rollup-linux-s390x-gnu@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.43.0.tgz#0852608843d05852af3f447bf43bb63d80d62b6a" integrity sha512-QmNIAqDiEMEvFV15rsSnjoSmO0+eJLoKRD9EAa9rrYNwO/XRCtOGM3A5A0X+wmG+XRrw9Fxdsw+LnyYiZWWcVw== +"@rollup/rollup-linux-s390x-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.50.1.tgz#b147760d63c6f35b4b18e6a25a2a760dd3ea0c05" + integrity sha512-t9YrKfaxCYe7l7ldFERE1BRg/4TATxIg+YieHQ966jwvo7ddHJxPj9cNFWLAzhkVsbBvNA4qTbPVNsZKBO4NSg== + "@rollup/rollup-linux-x64-gnu@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.43.0.tgz#d16a57f86357a4e697142bee244afed59b24e6c5" integrity sha512-jAHr/S0iiBtFyzjhOkAics/2SrXE092qyqEg96e90L3t9Op8OTzS6+IX0Fy5wCt2+KqeHAkti+eitV0wvblEoQ== +"@rollup/rollup-linux-x64-gnu@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.50.1.tgz#fc0be1da374f85e7e85dccaf1ff12d7cfc9fbe3d" + integrity sha512-MCgtFB2+SVNuQmmjHf+wfI4CMxy3Tk8XjA5Z//A0AKD7QXUYFMQcns91K6dEHBvZPCnhJSyDWLApk40Iq/H3tA== + "@rollup/rollup-linux-x64-musl@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.43.0.tgz#51cbc8b1eb46ebc0e284725418b6fbf48686e4e2" integrity sha512-3yATWgdeXyuHtBhrLt98w+5fKurdqvs8B53LaoKD7P7H7FKOONLsBVMNl9ghPQZQuYcceV5CDyPfyfGpMWD9mQ== +"@rollup/rollup-linux-x64-musl@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.50.1.tgz#54c79932e0f9a3c992b034c82325be3bcde0d067" + integrity sha512-nEvqG+0jeRmqaUMuwzlfMKwcIVffy/9KGbAGyoa26iu6eSngAYQ512bMXuqqPrlTyfqdlB9FVINs93j534UJrg== + +"@rollup/rollup-openharmony-arm64@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.50.1.tgz#fc48e74d413623ac02c1d521bec3e5e784488fdc" + integrity sha512-RDsLm+phmT3MJd9SNxA9MNuEAO/J2fhW8GXk62G/B4G7sLVumNFbRwDL6v5NrESb48k+QMqdGbHgEtfU0LCpbA== + "@rollup/rollup-win32-arm64-msvc@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.43.0.tgz#d6d84aace2b211119bf0ab1c586e29d01e32aa01" integrity sha512-wVzXp2qDSCOpcBCT5WRWLmpJRIzv23valvcTwMHEobkjippNf+C3ys/+wf07poPkeNix0paTNemB2XrHr2TnGw== +"@rollup/rollup-win32-arm64-msvc@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.50.1.tgz#8ce3d1181644406362cf1e62c90e88ab083e02bb" + integrity sha512-hpZB/TImk2FlAFAIsoElM3tLzq57uxnGYwplg6WDyAxbYczSi8O2eQ+H2Lx74504rwKtZ3N2g4bCUkiamzS6TQ== + "@rollup/rollup-win32-ia32-msvc@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.43.0.tgz#4af33168de2f65b97a8f36bd1d8d21cea34d3ccb" integrity sha512-fYCTEyzf8d+7diCw8b+asvWDCLMjsCEA8alvtAutqJOJp/wL5hs1rWSqJ1vkjgW0L2NB4bsYJrpKkiIPRR9dvw== +"@rollup/rollup-win32-ia32-msvc@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.50.1.tgz#dd2dfc896eac4b2689d55f01c6d51c249263f805" + integrity sha512-SXjv8JlbzKM0fTJidX4eVsH+Wmnp0/WcD8gJxIZyR6Gay5Qcsmdbi9zVtnbkGPG8v2vMR1AD06lGWy5FLMcG7A== + "@rollup/rollup-win32-x64-msvc@4.43.0": version "4.43.0" resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.43.0.tgz#42a88207659e404e8ffa655cae763cbad94906ab" integrity sha512-SnGhLiE5rlK0ofq8kzuDkM0g7FN1s5VYY+YSMTibP7CqShxCQvqtNxTARS4xX4PFJfHjG0ZQYX9iGzI3FQh5Aw== +"@rollup/rollup-win32-x64-msvc@4.50.1": + version "4.50.1" + resolved "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.50.1.tgz#13f758c97b9fbbac56b6928547a3ff384e7cfb3e" + integrity sha512-StxAO/8ts62KZVRAm4JZYq9+NqNsV7RvimNK+YM7ry//zebEH6meuugqW/P5OFUCjyQgui+9fUxT6d5NShvMvA== + "@shikijs/core@2.5.0", "@shikijs/core@^2.1.0": version "2.5.0" resolved "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz#e14d33961dfa3141393d4a76fc8923d0d1c4b62f" @@ -1517,7 +1752,7 @@ resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz#4158d3105276773d5b7695cd4834b1722e4f37a8" integrity sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ== -"@types/estree@^1.0.6": +"@types/estree@1.0.8", "@types/estree@^1.0.6": version "1.0.8" resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== @@ -1791,15 +2026,6 @@ "@typescript-eslint/visitor-keys" "8.38.0" debug "^4.3.4" -"@typescript-eslint/project-service@8.34.1": - version "8.34.1" - resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.34.1.tgz#20501f8b87202c45f5e70a5b24dcdcb8fe12d460" - integrity sha512-nuHlOmFZfuRwLJKDGQOVc0xnQrAmuq1Mj/ISou5044y1ajGNp2BNliIqp7F2LPQ5sForz8lempMFCovfeS1XoA== - dependencies: - "@typescript-eslint/tsconfig-utils" "^8.34.1" - "@typescript-eslint/types" "^8.34.1" - debug "^4.3.4" - "@typescript-eslint/project-service@8.38.0": version "8.38.0" resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.38.0.tgz#4900771f943163027fd7d2020a062892056b5e2f" @@ -1809,13 +2035,14 @@ "@typescript-eslint/types" "^8.38.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@8.34.1": - version "8.34.1" - resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.34.1.tgz#727ea43441f4d23d5c73d34195427d85042e5117" - integrity sha512-beu6o6QY4hJAgL1E8RaXNC071G4Kso2MGmJskCFQhRhg8VOH/FDbC8soP8NHN7e/Hdphwp8G8cE6OBzC8o41ZA== +"@typescript-eslint/project-service@8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.41.0.tgz#08ebf882d413a038926e73fda36e00c3dba84882" + integrity sha512-b8V9SdGBQzQdjJ/IO3eDifGpDBJfvrNTp2QD9P2BeqWTGrRibgfgIlBSw6z3b6R7dPzg752tOs4u/7yCLxksSQ== dependencies: - "@typescript-eslint/types" "8.34.1" - "@typescript-eslint/visitor-keys" "8.34.1" + "@typescript-eslint/tsconfig-utils" "^8.41.0" + "@typescript-eslint/types" "^8.41.0" + debug "^4.3.4" "@typescript-eslint/scope-manager@8.38.0": version "8.38.0" @@ -1825,16 +2052,24 @@ "@typescript-eslint/types" "8.38.0" "@typescript-eslint/visitor-keys" "8.38.0" -"@typescript-eslint/tsconfig-utils@8.34.1", "@typescript-eslint/tsconfig-utils@^8.34.1": - version "8.34.1" - resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.34.1.tgz#d6abb1b1e9f1f1c83ac92051c8fbf2dbc4dc9f5e" - integrity sha512-K4Sjdo4/xF9NEeA2khOb7Y5nY6NSXBnod87uniVYW9kHP+hNlDV8trUSFeynA2uxWam4gIWgWoygPrv9VMWrYg== +"@typescript-eslint/scope-manager@8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.41.0.tgz#c8aba12129cb9cead1f1727f58e6a0fcebeecdb5" + integrity sha512-n6m05bXn/Cd6DZDGyrpXrELCPVaTnLdPToyhBoFkLIMznRUQUEQdSp96s/pcWSQdqOhrgR1mzJ+yItK7T+WPMQ== + dependencies: + "@typescript-eslint/types" "8.41.0" + "@typescript-eslint/visitor-keys" "8.41.0" "@typescript-eslint/tsconfig-utils@8.38.0", "@typescript-eslint/tsconfig-utils@^8.38.0": version "8.38.0" resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.38.0.tgz#6de4ce224a779601a8df667db56527255c42c4d0" integrity sha512-Lum9RtSE3EroKk/bYns+sPOodqb2Fv50XOl/gMviMKNvanETUuUcC9ObRbzrJ4VSd2JalPqgSAavwrPiPvnAiQ== +"@typescript-eslint/tsconfig-utils@8.41.0", "@typescript-eslint/tsconfig-utils@^8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.41.0.tgz#134dee36eb16cdd78095a20bca0516d10b5dda75" + integrity sha512-TDhxYFPUYRFxFhuU5hTIJk+auzM/wKvWgoNYOPcOf6i4ReYlOoYN8q1dV5kOTjNQNJgzWN3TUUQMtlLOcUgdUw== + "@typescript-eslint/type-utils@8.38.0": version "8.38.0" resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.38.0.tgz#a56cd84765fa6ec135fe252b5db61e304403a85b" @@ -1846,37 +2081,21 @@ debug "^4.3.4" ts-api-utils "^2.1.0" -"@typescript-eslint/types@8.34.1", "@typescript-eslint/types@^8.34.1": - version "8.34.1" - resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.34.1.tgz#565a46a251580dae674dac5aafa8eb14b8322a35" - integrity sha512-rjLVbmE7HR18kDsjNIZQHxmv9RZwlgzavryL5Lnj2ujIRTeXlKtILHgRNmQ3j4daw7zd+mQgy+uyt6Zo6I0IGA== - "@typescript-eslint/types@8.38.0", "@typescript-eslint/types@^8.38.0": version "8.38.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.38.0.tgz#297351c994976b93c82ac0f0e206c8143aa82529" integrity sha512-wzkUfX3plUqij4YwWaJyqhiPE5UCRVlFpKn1oCRn2O1bJ592XxWJj8ROQ3JD5MYXLORW84063z3tZTb/cs4Tyw== +"@typescript-eslint/types@8.41.0", "@typescript-eslint/types@^8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.41.0.tgz#9935afeaae65e535abcbcee95383fa649c64d16d" + integrity sha512-9EwxsWdVqh42afLbHP90n2VdHaWU/oWgbH2P0CfcNfdKL7CuKpwMQGjwev56vWu9cSKU7FWSu6r9zck6CVfnag== + "@typescript-eslint/types@^8.35.0": version "8.35.0" resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.35.0.tgz#e60d062907930e30008d796de5c4170f02618a93" integrity sha512-0mYH3emanku0vHw2aRLNGqe7EXh9WHEhi7kZzscrMDf6IIRUQ5Jk4wp1QrledE/36KtdZrVfKnE32eZCf/vaVQ== -"@typescript-eslint/typescript-estree@8.34.1": - version "8.34.1" - resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.34.1.tgz#befdb042a6bc44fdad27429b2d3b679c80daad71" - integrity sha512-rjCNqqYPuMUF5ODD+hWBNmOitjBWghkGKJg6hiCHzUvXRy6rK22Jd3rwbP2Xi+R7oYVvIKhokHVhH41BxPV5mA== - dependencies: - "@typescript-eslint/project-service" "8.34.1" - "@typescript-eslint/tsconfig-utils" "8.34.1" - "@typescript-eslint/types" "8.34.1" - "@typescript-eslint/visitor-keys" "8.34.1" - debug "^4.3.4" - fast-glob "^3.3.2" - is-glob "^4.0.3" - minimatch "^9.0.4" - semver "^7.6.0" - ts-api-utils "^2.1.0" - "@typescript-eslint/typescript-estree@8.38.0": version "8.38.0" resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.38.0.tgz#82262199eb6778bba28a319e25ad05b1158957df" @@ -1893,6 +2112,22 @@ semver "^7.6.0" ts-api-utils "^2.1.0" +"@typescript-eslint/typescript-estree@8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.41.0.tgz#7c9cff8b4334ce96f14e9689692e8cf426ce4d59" + integrity sha512-D43UwUYJmGhuwHfY7MtNKRZMmfd8+p/eNSfFe6tH5mbVDto+VQCayeAt35rOx3Cs6wxD16DQtIKw/YXxt5E0UQ== + dependencies: + "@typescript-eslint/project-service" "8.41.0" + "@typescript-eslint/tsconfig-utils" "8.41.0" + "@typescript-eslint/types" "8.41.0" + "@typescript-eslint/visitor-keys" "8.41.0" + debug "^4.3.4" + fast-glob "^3.3.2" + is-glob "^4.0.3" + minimatch "^9.0.4" + semver "^7.6.0" + ts-api-utils "^2.1.0" + "@typescript-eslint/utils@8.38.0": version "8.38.0" resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.38.0.tgz#5f10159899d30eb92ba70e642ca6f754bddbf15a" @@ -1903,23 +2138,15 @@ "@typescript-eslint/types" "8.38.0" "@typescript-eslint/typescript-estree" "8.38.0" -"@typescript-eslint/utils@^8.0.0": - version "8.34.1" - resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.34.1.tgz#f98c9b0c5cae407e34f5131cac0f3a74347a398e" - integrity sha512-mqOwUdZ3KjtGk7xJJnLbHxTuWVn3GO2WZZuM+Slhkun4+qthLdXx32C8xIXbO1kfCECb3jIs3eoxK3eryk7aoQ== +"@typescript-eslint/utils@^8.24.1": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.41.0.tgz#17cb3b766c1626311004ea41ffd8c27eb226b953" + integrity sha512-udbCVstxZ5jiPIXrdH+BZWnPatjlYwJuJkDA4Tbo3WyYLh8NvB+h/bKeSZHDOFKfphsZYJQqaFtLeXEqurQn1A== dependencies: "@eslint-community/eslint-utils" "^4.7.0" - "@typescript-eslint/scope-manager" "8.34.1" - "@typescript-eslint/types" "8.34.1" - "@typescript-eslint/typescript-estree" "8.34.1" - -"@typescript-eslint/visitor-keys@8.34.1": - version "8.34.1" - resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.34.1.tgz#28a1987ea3542ccafb92aa792726a304b39531cf" - integrity sha512-xoh5rJ+tgsRKoXnkBPFRLZ7rjKM0AfVbC68UZ/ECXoDbfggb9RbEySN359acY1vS3qZ0jVTVWzbtfapwm5ztxw== - dependencies: - "@typescript-eslint/types" "8.34.1" - eslint-visitor-keys "^4.2.1" + "@typescript-eslint/scope-manager" "8.41.0" + "@typescript-eslint/types" "8.41.0" + "@typescript-eslint/typescript-estree" "8.41.0" "@typescript-eslint/visitor-keys@8.38.0": version "8.38.0" @@ -1929,6 +2156,14 @@ "@typescript-eslint/types" "8.38.0" eslint-visitor-keys "^4.2.1" +"@typescript-eslint/visitor-keys@8.41.0": + version "8.41.0" + resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.41.0.tgz#16eb99b55d207f6688002a2cf425e039579aa9a9" + integrity sha512-+GeGMebMCy0elMNg67LRNoVnUFPIm37iu5CmHESVx56/9Jsfdpsvbv605DQ81Pi/x11IdKUsS5nzgTYbCQU9fg== + dependencies: + "@typescript-eslint/types" "8.41.0" + eslint-visitor-keys "^4.2.1" + "@ungap/structured-clone@^1.0.0": version "1.3.0" resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" @@ -2052,6 +2287,13 @@ test-exclude "^7.0.1" tinyrainbow "^2.0.0" +"@vitest/eslint-plugin@^1.3.4": + version "1.3.4" + resolved "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.3.4.tgz#010f99ecfdcf349eb6d9c1f29c31ebcc8f5e18f8" + integrity sha512-EOg8d0jn3BAiKnR55WkFxmxfWA3nmzrbIIuOXyTe6A72duryNgyU+bdBEauA97Aab3ho9kLmAwgPX63Ckj4QEg== + dependencies: + "@typescript-eslint/utils" "^8.24.1" + "@vitest/expect@3.2.4": version "3.2.4" resolved "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz#8362124cd811a5ee11c5768207b9df53d34f2433" @@ -3423,6 +3665,38 @@ esbuild@^0.21.3: "@esbuild/win32-ia32" "0.21.5" "@esbuild/win32-x64" "0.21.5" +esbuild@^0.25.0: + version "0.25.9" + resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz#15ab8e39ae6cdc64c24ff8a2c0aef5b3fd9fa976" + integrity sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.9" + "@esbuild/android-arm" "0.25.9" + "@esbuild/android-arm64" "0.25.9" + "@esbuild/android-x64" "0.25.9" + "@esbuild/darwin-arm64" "0.25.9" + "@esbuild/darwin-x64" "0.25.9" + "@esbuild/freebsd-arm64" "0.25.9" + "@esbuild/freebsd-x64" "0.25.9" + "@esbuild/linux-arm" "0.25.9" + "@esbuild/linux-arm64" "0.25.9" + "@esbuild/linux-ia32" "0.25.9" + "@esbuild/linux-loong64" "0.25.9" + "@esbuild/linux-mips64el" "0.25.9" + "@esbuild/linux-ppc64" "0.25.9" + "@esbuild/linux-riscv64" "0.25.9" + "@esbuild/linux-s390x" "0.25.9" + "@esbuild/linux-x64" "0.25.9" + "@esbuild/netbsd-arm64" "0.25.9" + "@esbuild/netbsd-x64" "0.25.9" + "@esbuild/openbsd-arm64" "0.25.9" + "@esbuild/openbsd-x64" "0.25.9" + "@esbuild/openharmony-arm64" "0.25.9" + "@esbuild/sunos-x64" "0.25.9" + "@esbuild/win32-arm64" "0.25.9" + "@esbuild/win32-ia32" "0.25.9" + "@esbuild/win32-x64" "0.25.9" + escalade@^3.1.1, escalade@^3.2.0: version "3.2.0" resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" @@ -3487,13 +3761,6 @@ eslint-plugin-import-x@^4.15.2: stable-hash-x "^0.2.0" unrs-resolver "^1.9.2" -eslint-plugin-jest@^29.0.0: - version "29.0.1" - resolved "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-29.0.1.tgz#0f72a81349409d20742208260c9a6cb9efed4df5" - integrity sha512-EE44T0OSMCeXhDrrdsbKAhprobKkPtJTbQz5yEktysNpHeDZTAL1SfDTNKmcFfJkY6yrQLtTKZALrD3j/Gpmiw== - dependencies: - "@typescript-eslint/utils" "^8.0.0" - eslint-scope@^8.4.0: version "8.4.0" resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz#88e646a207fad61436ffa39eb505147200655c82" @@ -3707,6 +3974,11 @@ fdir@^6.4.3, fdir@^6.4.4: resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz#2b268c0232697063111bbf3f64810a2a741ba281" integrity sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w== +fdir@^6.5.0: + version "6.5.0" + resolved "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350" + integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg== + figures@3.2.0, figures@^3.0.0: version "3.2.0" resolved "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" @@ -6154,6 +6426,11 @@ picomatch@^4.0.2: resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz#77c742931e8f3b8820946c76cd0c1f13730d1dab" integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg== +picomatch@^4.0.3: + version "4.0.3" + resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042" + integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q== + pidtree@^0.6.0: version "0.6.0" resolved "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz#90ad7b6d42d5841e69e0a2419ef38f8883aa057c" @@ -6574,6 +6851,36 @@ rollup@^4.20.0: "@rollup/rollup-win32-x64-msvc" "4.43.0" fsevents "~2.3.2" +rollup@^4.43.0: + version "4.50.1" + resolved "https://registry.npmjs.org/rollup/-/rollup-4.50.1.tgz#6f0717c34aacc65cc727eeaaaccc2afc4e4485fd" + integrity sha512-78E9voJHwnXQMiQdiqswVLZwJIzdBKJ1GdI5Zx6XwoFKUIk09/sSrr+05QFzvYb8q6Y9pPV45zzDuYa3907TZA== + dependencies: + "@types/estree" "1.0.8" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.50.1" + "@rollup/rollup-android-arm64" "4.50.1" + "@rollup/rollup-darwin-arm64" "4.50.1" + "@rollup/rollup-darwin-x64" "4.50.1" + "@rollup/rollup-freebsd-arm64" "4.50.1" + "@rollup/rollup-freebsd-x64" "4.50.1" + "@rollup/rollup-linux-arm-gnueabihf" "4.50.1" + "@rollup/rollup-linux-arm-musleabihf" "4.50.1" + "@rollup/rollup-linux-arm64-gnu" "4.50.1" + "@rollup/rollup-linux-arm64-musl" "4.50.1" + "@rollup/rollup-linux-loongarch64-gnu" "4.50.1" + "@rollup/rollup-linux-ppc64-gnu" "4.50.1" + "@rollup/rollup-linux-riscv64-gnu" "4.50.1" + "@rollup/rollup-linux-riscv64-musl" "4.50.1" + "@rollup/rollup-linux-s390x-gnu" "4.50.1" + "@rollup/rollup-linux-x64-gnu" "4.50.1" + "@rollup/rollup-linux-x64-musl" "4.50.1" + "@rollup/rollup-openharmony-arm64" "4.50.1" + "@rollup/rollup-win32-arm64-msvc" "4.50.1" + "@rollup/rollup-win32-ia32-msvc" "4.50.1" + "@rollup/rollup-win32-x64-msvc" "4.50.1" + fsevents "~2.3.2" + run-async@^2.4.0: version "2.4.1" resolved "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" @@ -7017,9 +7324,9 @@ tabbable@^6.2.0: integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== tar-fs@^3.0.5: - version "3.1.0" - resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.0.tgz#4675e2254d81410e609d91581a762608de999d25" - integrity sha512-5Mty5y/sOF1YWj1J6GiBodjlDc05CUR8PKXrsnFAiSG0xA+GHeWLovaZPYUDXkH/1iKRf2+M5+OrRgzC7O9b7w== + version "3.1.1" + resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz#4f164e59fb60f103d472360731e8c6bb4a7fe9ef" + integrity sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg== dependencies: pump "^3.0.0" tar-stream "^3.1.5" @@ -7134,6 +7441,14 @@ tinyglobby@^0.2.14: fdir "^6.4.4" picomatch "^4.0.2" +tinyglobby@^0.2.15: + version "0.2.15" + resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2" + integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ== + dependencies: + fdir "^6.5.0" + picomatch "^4.0.3" + tinypool@^1.1.1: version "1.1.1" resolved "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz#059f2d042bd37567fbc017d3d426bdd2a2612591" @@ -7157,9 +7472,9 @@ tmp@^0.0.33: os-tmpdir "~1.0.2" tmp@^0.2.1, tmp@~0.2.1: - version "0.2.3" - resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" - integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + version "0.2.4" + resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.4.tgz#c6db987a2ccc97f812f17137b36af2b6521b0d13" + integrity sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ== to-regex-range@^5.0.1: version "5.0.1" @@ -7442,10 +7757,24 @@ vite-node@3.2.4: pathe "^2.0.3" vite "^5.0.0 || ^6.0.0 || ^7.0.0-0" -"vite@^5.0.0 || ^6.0.0 || ^7.0.0-0", vite@^5.4.14: - version "5.4.19" - resolved "https://registry.npmjs.org/vite/-/vite-5.4.19.tgz#20efd060410044b3ed555049418a5e7d1998f959" - integrity sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA== +"vite@^5.0.0 || ^6.0.0 || ^7.0.0-0": + version "7.1.5" + resolved "https://registry.npmjs.org/vite/-/vite-7.1.5.tgz#4dbcb48c6313116689be540466fc80faa377be38" + integrity sha512-4cKBO9wR75r0BeIWWWId9XK9Lj6La5X846Zw9dFfzMRw38IlTk2iCcUt6hsyiDRcPidc55ZParFYDXi0nXOeLQ== + dependencies: + esbuild "^0.25.0" + fdir "^6.5.0" + picomatch "^4.0.3" + postcss "^8.5.6" + rollup "^4.43.0" + tinyglobby "^0.2.15" + optionalDependencies: + fsevents "~2.3.3" + +vite@^5.4.14: + version "5.4.20" + resolved "https://registry.npmjs.org/vite/-/vite-5.4.20.tgz#3267a5e03f21212f44edfd72758138e8fcecd76a" + integrity sha512-j3lYzGC3P+B5Yfy/pfKNgVEg4+UtcIJcVRt2cDjIOmhLourAqPqf8P7acgxeiSgUB7E3p2P8/3gNIgDLpwzs4g== dependencies: esbuild "^0.21.3" postcss "^8.4.43"