diff --git a/tools/lint-md.js b/tools/lint-md.js index ed09bd170affed..03777769db5b11 100644 --- a/tools/lint-md.js +++ b/tools/lint-md.js @@ -49469,6 +49469,17 @@ const validVersionNumberRegex = /^v\d+\.\d+\.\d+$/; const prUrlRegex = new RegExp("^https://github.com/nodejs/node/pull/\\d+$"); const privatePRUrl = "https://github.com/nodejs-private/node-private/pull/"; +let releasedVersions; +let invalidVersionMessage = "version(s) must respect the pattern `vx.x.x` or"; +if (process.env.NODE_RELEASED_VERSIONS) { + console.log("Using release list from env..."); + releasedVersions = process.env.NODE_RELEASED_VERSIONS.split(",").map( + (v) => `v${v}` + ); + invalidVersionMessage = `version not listed in the changelogs, `; +} +invalidVersionMessage += `use the placeholder \`${VERSION_PLACEHOLDER}\``; + const kContainsIllegalKey = Symbol("illegal key"); const kWrongKeyOrder = Symbol("Wrong key order"); function unorderedKeys(meta) { @@ -49488,11 +49499,16 @@ function containsInvalidVersionNumber(version) { return version.some(containsInvalidVersionNumber); } - return ( - version !== undefined && - version !== VERSION_PLACEHOLDER && - !validVersionNumberRegex.test(version) - ); + if (version === undefined || version === VERSION_PLACEHOLDER) return false; + + if ( + releasedVersions && + // Always ignore 0.0.x and 0.1.x release numbers: + (version[1] !== "0" || (version[3] !== "0" && version[3] !== "1")) + ) + return !releasedVersions.includes(version); + + return !validVersionNumberRegex.test(version); } const getValidSemver = (version) => version === VERSION_PLACEHOLDER ? MAX_SAFE_SEMVER_VERSION : version; @@ -49569,11 +49585,7 @@ function validateChanges(file, node, changes) { } if (containsInvalidVersionNumber(change.version)) { - file.message( - `changes[${index}]: version(s) must respect the pattern \`vx.x.x\` ` + - `or use the placeholder \`${VERSION_PLACEHOLDER}\``, - node - ); + file.message(`changes[${index}]: ${invalidVersionMessage}`, node); } else if (areVersionsUnordered(change.version)) { file.message(`changes[${index}]: list of versions is not in order`, node); } @@ -49627,19 +49639,14 @@ function validateMeta(node, file, meta) { } if (containsInvalidVersionNumber(meta.added)) { - file.message( - "Invalid `added` value: version(s) must respect the pattern `vx.x.x` " + - `or use the placeholder \`${VERSION_PLACEHOLDER}\``, - node - ); + file.message(`Invalid \`added\` value: ${invalidVersionMessage}`, node); } else if (areVersionsUnordered(meta.added)) { file.message("Versions in `added` list are not in order", node); } if (containsInvalidVersionNumber(meta.deprecated)) { file.message( - "Invalid `deprecated` value: version(s) must respect the pattern `vx.x.x` " + - `or use the placeholder \`${VERSION_PLACEHOLDER}\``, + `Invalid \`deprecated\` value: ${invalidVersionMessage}`, node ); } else if (areVersionsUnordered(meta.deprecated)) { @@ -49647,11 +49654,7 @@ function validateMeta(node, file, meta) { } if (containsInvalidVersionNumber(meta.removed)) { - file.message( - "Invalid `removed` value: version(s) must respect the pattern `vx.x.x` " + - `or use the placeholder \`${VERSION_PLACEHOLDER}\``, - node - ); + file.message(`Invalid \`removed\` value: ${invalidVersionMessage}`, node); } else if (areVersionsUnordered(meta.removed)) { file.message("Versions in `removed` list are not in order", node); } @@ -50490,6 +50493,7 @@ var plugins$2 = [ flags: [ "bash", "c", + "cjs", "coffee", "console", "cpp", @@ -50498,6 +50502,7 @@ var plugins$2 = [ "js", "json", "markdown", + "mjs", "powershell", "r", "text", diff --git a/tools/node-lint-md-cli-rollup/package-lock.json b/tools/node-lint-md-cli-rollup/package-lock.json index 240c1e01089457..c34acafa55c2a4 100644 --- a/tools/node-lint-md-cli-rollup/package-lock.json +++ b/tools/node-lint-md-cli-rollup/package-lock.json @@ -374,7 +374,6 @@ "dependencies": { "anymatch": "~3.1.1", "braces": "~3.0.2", - "fsevents": "~2.3.1", "glob-parent": "~5.1.0", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", @@ -2112,9 +2111,9 @@ } }, "node_modules/remark-preset-lint-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-preset-lint-node/-/remark-preset-lint-node-2.0.1.tgz", - "integrity": "sha512-f0/cL2XiBmsLpCtpUeVxSJf1d3N5qRQD+W2GF8TXUxFntxvxM6Gm5lPGPouXsqFQ2gc92uoF8MgC1nRWVzYpzA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/remark-preset-lint-node/-/remark-preset-lint-node-2.1.1.tgz", + "integrity": "sha512-3Cv4kDVaC8V0XsiK/ntdpOEztOx0v8L9DczQ3KRIN7QwyPS3Gjaq2DJ7wNglXVK4z7PekcND0mXK78eLduhwwA==", "dependencies": { "js-yaml": "^4.0.0", "remark-lint": "^8.0.0", @@ -2240,9 +2239,6 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.36.1.tgz", "integrity": "sha512-eAfqho8dyzuVvrGqpR0ITgEdq0zG2QJeWYh+HeuTbpcaXk8vNFc48B7bJa1xYosTCKx0CuW+447oQOW8HgBIZQ==", "dev": true, - "dependencies": { - "fsevents": "~2.1.2" - }, "bin": { "rollup": "dist/bin/rollup" }, @@ -4230,9 +4226,9 @@ } }, "remark-preset-lint-node": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-preset-lint-node/-/remark-preset-lint-node-2.0.1.tgz", - "integrity": "sha512-f0/cL2XiBmsLpCtpUeVxSJf1d3N5qRQD+W2GF8TXUxFntxvxM6Gm5lPGPouXsqFQ2gc92uoF8MgC1nRWVzYpzA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/remark-preset-lint-node/-/remark-preset-lint-node-2.1.1.tgz", + "integrity": "sha512-3Cv4kDVaC8V0XsiK/ntdpOEztOx0v8L9DczQ3KRIN7QwyPS3Gjaq2DJ7wNglXVK4z7PekcND0mXK78eLduhwwA==", "requires": { "js-yaml": "^4.0.0", "remark-lint": "^8.0.0",