From 2bce0d3504b9ed343dc7cb9c1ebde21f168b6f07 Mon Sep 17 00:00:00 2001 From: sherbakovdev Date: Fri, 17 May 2024 22:35:48 +0300 Subject: [PATCH] feat: support latest conventional-changelog packages (#643) BREAKING CHANGE: by supporting the latest major versions of conventional-changelog packages, we are dropping support for previous major versions of those packages due to the breaking changes between majors. this only impacts your project if you are installing alongside semantic-release, so updating those packages to latest version should be the only change you need for this update. no action should be necessary if you are using default semantic-release config --- index.js | 9 +- lib/load-changelog-config.js | 4 +- package-lock.json | 264 ++++++++++++++++------ package.json | 20 +- test/integration.test.js | 14 +- test/load-changelog-config.test.js | 20 +- wrappers/conventional-changelog-writer.js | 2 +- 7 files changed, 233 insertions(+), 100 deletions(-) diff --git a/index.js b/index.js index f2e4b717..ffd3cfa8 100644 --- a/index.js +++ b/index.js @@ -2,9 +2,9 @@ import { format } from "url"; import { find, merge } from "lodash-es"; import getStream from "get-stream"; import intoStream from "into-stream"; -import { sync as parser } from "conventional-commits-parser"; +import { CommitParser } from "conventional-commits-parser"; import writer from "./wrappers/conventional-changelog-writer.js"; -import filter from "conventional-commits-filter"; +import { filterRevertedCommitsSync } from "conventional-commits-filter"; import { readPackageUp } from "read-pkg-up"; import debugFactory from "debug"; import loadChangelogConfig from "./lib/load-changelog-config.js"; @@ -43,7 +43,8 @@ export async function generateNotes(pluginConfig, context) { const { issue, commit, referenceActions, issuePrefixes } = find(HOSTS_CONFIG, (conf) => conf.hostname === hostname) || HOSTS_CONFIG.default; - const parsedCommits = filter( + const parser = new CommitParser({ referenceActions, issuePrefixes, ...parserOpts }); + const parsedCommits = filterRevertedCommitsSync( commits .filter(({ message, hash }) => { if (!message.trim()) { @@ -55,7 +56,7 @@ export async function generateNotes(pluginConfig, context) { }) .map((rawCommit) => ({ ...rawCommit, - ...parser(rawCommit.message, { referenceActions, issuePrefixes, ...parserOpts }), + ...parser.parse(rawCommit.message), })) ); const previousTag = lastRelease.gitTag || lastRelease.gitHead; diff --git a/lib/load-changelog-config.js b/lib/load-changelog-config.js index d078a333..bbd69399 100644 --- a/lib/load-changelog-config.js +++ b/lib/load-changelog-config.js @@ -33,7 +33,7 @@ export default async ({ preset, config, parserOpts, writerOpts, presetConfig }, } return { - parserOpts: { ...loadedConfig.parserOpts, ...parserOpts }, - writerOpts: { ...loadedConfig.writerOpts, ...writerOpts }, + parserOpts: { ...loadedConfig.parser, ...parserOpts }, + writerOpts: { ...loadedConfig.writer, ...writerOpts }, }; }; diff --git a/package-lock.json b/package-lock.json index 8bb06742..a29bcec4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,10 +9,10 @@ "version": "0.0.0-development", "license": "MIT", "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-changelog-writer": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", "debug": "^4.0.0", "get-stream": "^7.0.0", "import-from-esm": "^1.0.3", @@ -23,12 +23,12 @@ "devDependencies": { "ava": "6.1.2", "c8": "9.1.0", - "conventional-changelog-atom": "4.0.0", - "conventional-changelog-conventionalcommits": "7.0.2", - "conventional-changelog-ember": "4.0.0", - "conventional-changelog-eslint": "5.0.0", - "conventional-changelog-express": "4.0.0", - "conventional-changelog-jshint": "4.0.0", + "conventional-changelog-atom": "5.0.0", + "conventional-changelog-conventionalcommits": "8.0.0", + "conventional-changelog-ember": "5.0.0", + "conventional-changelog-eslint": "6.0.0", + "conventional-changelog-express": "5.0.0", + "conventional-changelog-jshint": "5.0.0", "escape-string-regexp": "5.0.0", "fs-extra": "11.2.0", "lockfile-lint": "4.13.2", @@ -1041,6 +1041,57 @@ "semantic-release": ">=20.1.0" } }, + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@semantic-release/commit-analyzer/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@semantic-release/error": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-4.0.0.tgz", @@ -1169,6 +1220,77 @@ "semantic-release": ">=20.1.0" } }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-changelog-writer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", + "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^4.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^12.0.1", + "semver": "^7.5.2", + "split2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@semantic-release/release-notes-generator/node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sigstore/bundle": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@sigstore/bundle/-/bundle-1.1.0.tgz", @@ -1412,6 +1534,11 @@ "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==" }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" + }, "node_modules/@vercel/nft": { "version": "0.26.4", "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.26.4.tgz", @@ -2669,118 +2796,114 @@ "dev": true }, "node_modules/conventional-changelog-angular": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", - "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.0.0.tgz", + "integrity": "sha512-CLf+zr6St0wIxos4bmaKHRXWAcsCXrJU6F4VdNDrGRK3B8LDLKoX3zuMV5GhtbGkVR/LohZ6MT6im43vZLSjmA==", "dependencies": { "compare-func": "^2.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-changelog-atom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-4.0.0.tgz", - "integrity": "sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-5.0.0.tgz", + "integrity": "sha512-WfzCaAvSCFPkznnLgLnfacRAzjgqjLUjvf3MftfsJzQdDICqkOOpcMtdJF3wTerxSpv2IAAjX8doM3Vozqle3g==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-changelog-conventionalcommits": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", - "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-8.0.0.tgz", + "integrity": "sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==", "dev": true, "dependencies": { "compare-func": "^2.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-changelog-ember": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-4.0.0.tgz", - "integrity": "sha512-D0IMhwcJUg1Y8FSry6XAplEJcljkHVlvAZddhhsdbL1rbsqRsMfGx/PIkPYq0ru5aDgn+OxhQ5N5yR7P9mfsvA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-5.0.0.tgz", + "integrity": "sha512-RPflVfm5s4cSO33GH/Ey26oxhiC67akcxSKL8CLRT3kQX2W3dbE19sSOM56iFqUJYEwv9mD9r6k79weWe1urfg==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-changelog-eslint": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-5.0.0.tgz", - "integrity": "sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-6.0.0.tgz", + "integrity": "sha512-eiUyULWjzq+ybPjXwU6NNRflApDWlPEQEHvI8UAItYW/h22RKkMnOAtfCZxMmrcMO1OKUWtcf2MxKYMWe9zJuw==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-changelog-express": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-4.0.0.tgz", - "integrity": "sha512-yWyy5c7raP9v7aTvPAWzqrztACNO9+FEI1FSYh7UP7YT1AkWgv5UspUeB5v3Ibv4/o60zj2o9GF2tqKQ99lIsw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-5.0.0.tgz", + "integrity": "sha512-D8Q6WctPkQpvr2HNCCmwU5GkX22BVHM0r4EW8vN0230TSyS/d6VQJDAxGb84lbg0dFjpO22MwmsikKL++Oo/oQ==", "dev": true, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-changelog-jshint": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-4.0.0.tgz", - "integrity": "sha512-LyXq1bbl0yG0Ai1SbLxIk8ZxUOe3AjnlwE6sVRQmMgetBk+4gY9EO3d00zlEt8Y8gwsITytDnPORl8al7InTjg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-5.0.0.tgz", + "integrity": "sha512-gGNphSb/opc76n2eWaO6ma4/Wqu3tpa2w7i9WYqI6Cs2fncDSI2/ihOfMvXveeTTeld0oFvwMVNV+IYQIk3F3g==", "dev": true, "dependencies": { "compare-func": "^2.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-changelog-writer": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", - "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-8.0.0.tgz", + "integrity": "sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==", "dependencies": { - "conventional-commits-filter": "^4.0.0", + "@types/semver": "^7.5.5", + "conventional-commits-filter": "^5.0.0", "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "meow": "^12.0.1", - "semver": "^7.5.2", - "split2": "^4.0.0" + "meow": "^13.0.0", + "semver": "^7.5.2" }, "bin": { - "conventional-changelog-writer": "cli.mjs" + "conventional-changelog-writer": "dist/cli/index.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-commits-filter": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", - "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-5.0.0.tgz", + "integrity": "sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==", "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/conventional-commits-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", - "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.0.0.tgz", + "integrity": "sha512-TbsINLp48XeMXR8EvGjTnKGsZqBemisPoyWESlpRyR8lif0lcwzqz+NMtYSj1ooF/WYjSuu7wX0CtdeeMEQAmA==", "dependencies": { - "is-text-path": "^2.0.0", - "JSONStream": "^1.3.5", - "meow": "^12.0.1", - "split2": "^4.0.0" + "meow": "^13.0.0" }, "bin": { - "conventional-commits-parser": "cli.mjs" + "conventional-commits-parser": "dist/cli/index.js" }, "engines": { - "node": ">=16" + "node": ">=18" } }, "node_modules/convert-hrtime": { @@ -5599,6 +5722,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, "dependencies": { "text-extensions": "^2.0.0" }, @@ -5854,7 +5978,8 @@ "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==" + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true }, "node_modules/jsonfile": { "version": "6.1.0", @@ -5881,6 +6006,7 @@ "version": "1.3.1", "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, "engines": [ "node >= 0.2.0" ] @@ -5889,6 +6015,7 @@ "version": "1.3.5", "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, "dependencies": { "jsonparse": "^1.2.0", "through": ">=2.2.7 <3" @@ -6413,11 +6540,11 @@ } }, "node_modules/meow": { - "version": "12.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", - "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", "engines": { - "node": ">=16.10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -11860,6 +11987,7 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, "engines": { "node": ">= 10.x" } @@ -12473,6 +12601,7 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, "engines": { "node": ">=8" }, @@ -12510,7 +12639,8 @@ "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true }, "node_modules/through2": { "version": "2.0.5", diff --git a/package.json b/package.json index 3f3bdae7..788e4b7f 100644 --- a/package.json +++ b/package.json @@ -11,10 +11,10 @@ "Gregor Martynus (https://twitter.com/gr2m)" ], "dependencies": { - "conventional-changelog-angular": "^7.0.0", - "conventional-changelog-writer": "^7.0.0", - "conventional-commits-filter": "^4.0.0", - "conventional-commits-parser": "^5.0.0", + "conventional-changelog-angular": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", + "conventional-commits-filter": "^5.0.0", + "conventional-commits-parser": "^6.0.0", "debug": "^4.0.0", "get-stream": "^7.0.0", "import-from-esm": "^1.0.3", @@ -25,12 +25,12 @@ "devDependencies": { "ava": "6.1.2", "c8": "9.1.0", - "conventional-changelog-atom": "4.0.0", - "conventional-changelog-conventionalcommits": "7.0.2", - "conventional-changelog-ember": "4.0.0", - "conventional-changelog-eslint": "5.0.0", - "conventional-changelog-express": "4.0.0", - "conventional-changelog-jshint": "4.0.0", + "conventional-changelog-atom": "5.0.0", + "conventional-changelog-conventionalcommits": "8.0.0", + "conventional-changelog-ember": "5.0.0", + "conventional-changelog-eslint": "6.0.0", + "conventional-changelog-express": "5.0.0", + "conventional-changelog-jshint": "5.0.0", "escape-string-regexp": "5.0.0", "fs-extra": "11.2.0", "lockfile-lint": "4.13.2", diff --git a/test/integration.test.js b/test/integration.test.js index 1db7b017..0dc2bb83 100644 --- a/test/integration.test.js +++ b/test/integration.test.js @@ -1,4 +1,3 @@ -import { promisify } from "node:util"; import path from "node:path"; import test from "ava"; import fs from "fs-extra"; @@ -179,7 +178,7 @@ test.serial('Accept a "parseOpts" and "writerOpts" objects as option', async (t) referenceActions: ["keyword"], issuePrefixes: ["#", "JIRA-"], }, - writerOpts: (await conventionalChangelogEslint()).writerOpts, + writerOpts: (await conventionalChangelogEslint()).writer, }, { cwd, options: { repositoryUrl }, lastRelease, nextRelease, commits } ); @@ -610,15 +609,18 @@ test.serial("Ignore malformatted commits and include valid ones", async (t) => { test.serial("Exclude commits if they have a matching revert commits", async (t) => { const { generateNotes } = await import("../index.js"); const commits = [ - { hash: "333", message: "revert: feat(scope2): First feature\n\nThis reverts commit 222.\n" }, - { hash: "222", message: "feat(scope2): First feature" }, - { hash: "111", message: "fix(scope1): First fix" }, + { hash: "df012f1", message: "revert: feat(scope2): First feature\n\nThis reverts commit df012f2.\n" }, + { hash: "df012f2", message: "feat(scope2): First feature" }, + { hash: "df012f3", message: "fix(scope1): First fix" }, ]; const changelog = await generateNotes({}, { cwd, options: { repositoryUrl }, lastRelease, nextRelease, commits }); t.regex(changelog, new RegExp(escape("(https://github.com/owner/repo/compare/v1.0.0...v2.0.0)"))); t.regex(changelog, /### Bug Fixes/); - t.regex(changelog, new RegExp(escape("* **scope1:** First fix ([111](https://github.com/owner/repo/commit/111))"))); + t.regex( + changelog, + new RegExp(escape("* **scope1:** First fix ([df012f3](https://github.com/owner/repo/commit/df012f3))")) + ); t.notRegex(changelog, /### Features/); t.notRegex(changelog, /Second feature/); }); diff --git a/test/load-changelog-config.test.js b/test/load-changelog-config.test.js index 026e1218..895d0071 100644 --- a/test/load-changelog-config.test.js +++ b/test/load-changelog-config.test.js @@ -63,8 +63,8 @@ test('Load "conventional-changelog-angular" by default', async (t) => { const changelogConfig = await loadChangelogConfig({}, { cwd }); const angularChangelogConfig = await conventionalChangelogAngular(); - t.deepEqual(changelogConfig.parserOpts, angularChangelogConfig.parserOpts); - assertWriterOptsAreFromAngularPreset(t, changelogConfig.writerOpts, angularChangelogConfig.writerOpts); + t.deepEqual(changelogConfig.parserOpts, angularChangelogConfig.parser); + assertWriterOptsAreFromAngularPreset(t, changelogConfig.writerOpts, angularChangelogConfig.writer); }); test('Accept a "parserOpts" object as option', async (t) => { @@ -77,8 +77,8 @@ test('Accept a "parserOpts" object as option', async (t) => { t.is(customParserOptions.headerPattern, changelogConfig.parserOpts.headerPattern); t.deepEqual(customParserOptions.headerCorrespondence, changelogConfig.parserOpts.headerCorrespondence); - t.deepEqual(changelogConfig.parserOpts.noteKeywords, angularChangelogConfig.parserOpts.noteKeywords); - assertWriterOptsAreFromAngularPreset(t, changelogConfig.writerOpts, angularChangelogConfig.writerOpts); + t.deepEqual(changelogConfig.parserOpts.noteKeywords, angularChangelogConfig.parser.noteKeywords); + assertWriterOptsAreFromAngularPreset(t, changelogConfig.writerOpts, angularChangelogConfig.writer); }); test('Accept a "writerOpts" object as option', async (t) => { @@ -88,8 +88,8 @@ test('Accept a "writerOpts" object as option', async (t) => { t.is(customWriterOptions.commitGroupsSort, changelogConfig.writerOpts.commitGroupsSort); t.deepEqual(customWriterOptions.commitsSort, changelogConfig.writerOpts.commitsSort); - t.deepEqual(changelogConfig.writerOpts.noteGroupsSort, angularChangelogConfig.writerOpts.noteGroupsSort); - t.deepEqual(changelogConfig.parserOpts, angularChangelogConfig.parserOpts); + t.deepEqual(changelogConfig.writerOpts.noteGroupsSort, angularChangelogConfig.writer.noteGroupsSort); + t.deepEqual(changelogConfig.parserOpts, angularChangelogConfig.parser); }); test('Accept a partial "parserOpts" object as option that overwrite a preset', async (t) => { @@ -103,7 +103,7 @@ test('Accept a partial "parserOpts" object as option that overwrite a preset', a t.is(customParserOptions.headerPattern, changelogConfig.parserOpts.headerPattern); t.deepEqual(customParserOptions.headerCorrespondence, changelogConfig.parserOpts.headerCorrespondence); t.truthy(changelogConfig.parserOpts.noteKeywords); - assertWriterOptsAreFromAngularPreset(t, changelogConfig.writerOpts, angularChangelogConfig.writerOpts); + assertWriterOptsAreFromAngularPreset(t, changelogConfig.writerOpts, angularChangelogConfig.writer); }); test('Accept a "writerOpts" object as option that overwrite a preset', async (t) => { @@ -114,7 +114,7 @@ test('Accept a "writerOpts" object as option that overwrite a preset', async (t) t.is(customWriterOptions.commitGroupsSort, changelogConfig.writerOpts.commitGroupsSort); t.deepEqual(customWriterOptions.commitsSort, changelogConfig.writerOpts.commitsSort); t.truthy(changelogConfig.writerOpts.noteGroupsSort); - t.deepEqual(changelogConfig.parserOpts, angularChangelogConfig.parserOpts); + t.deepEqual(changelogConfig.parserOpts, angularChangelogConfig.parser); }); test('Accept a partial "parserOpts" object as option that overwrite a config', async (t) => { @@ -134,7 +134,7 @@ test('Accept a partial "parserOpts" object as option that overwrite a config', a t.is(customParserOptions.headerPattern, changelogConfig.parserOpts.headerPattern); t.deepEqual(customParserOptions.headerCorrespondence, changelogConfig.parserOpts.headerCorrespondence); t.truthy(changelogConfig.parserOpts.noteKeywords); - assertWriterOptsAreFromAngularPreset(t, changelogConfig.writerOpts, angularChangelogConfig.writerOpts); + assertWriterOptsAreFromAngularPreset(t, changelogConfig.writerOpts, angularChangelogConfig.writer); }); test('Accept a "writerOpts" object as option that overwrite a config', async (t) => { @@ -151,7 +151,7 @@ test('Accept a "writerOpts" object as option that overwrite a config', async (t) t.is(customWriterOptions.commitGroupsSort, changelogConfig.writerOpts.commitGroupsSort); t.deepEqual(customWriterOptions.commitsSort, changelogConfig.writerOpts.commitsSort); t.truthy(changelogConfig.writerOpts.noteGroupsSort); - t.deepEqual(changelogConfig.parserOpts, angularChangelogConfig.parserOpts); + t.deepEqual(changelogConfig.parserOpts, angularChangelogConfig.parser); }); test(loadPreset, "angular"); diff --git a/wrappers/conventional-changelog-writer.js b/wrappers/conventional-changelog-writer.js index 0ebbb68d..cfb1e9c1 100644 --- a/wrappers/conventional-changelog-writer.js +++ b/wrappers/conventional-changelog-writer.js @@ -1,3 +1,3 @@ -import writer from 'conventional-changelog-writer'; +import { writeChangelogStream as writer } from 'conventional-changelog-writer'; export default writer;