{"_id":"@bernierllc/validators-semver-consistency","_rev":"8-cdcc9a9c22337dda6465ba49b988cbde","name":"@bernierllc/validators-semver-consistency","dist-tags":{"latest":"1.6.0"},"versions":{"1.0.0":{"name":"@bernierllc/validators-semver-consistency","version":"1.0.0","keywords":["semver","validation","versioning","changelog","changesets","package-management","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-semver-consistency@1.0.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"fc4e84a2e964e809ec2277d66c07c63f847ca7bb","tarball":"https://registry.npmjs.org/@bernierllc/validators-semver-consistency/-/validators-semver-consistency-1.0.0.tgz","fileCount":17,"integrity":"sha512-IuwcbAo3xE0V1VL+VKV5r1X19NIjdqwVD0qImPKqAPNECzD38GoaJIK4trZYtNF5I9HFpsQA86lMamfzGiLMHg==","signatures":[{"sig":"MEUCIQCSFrXa9H2DDJ7uGY3SVYzHwn4KMJ9mtrj+ELtB2g4cEgIgDu/UKYAJ5cfaEF+/sk4mqevb+i4PleAPXAIjVESqGOs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56966},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"391045f9d8cda761304c883d74b6af7895498698","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_npmVersion":"11.4.2","description":"Semver consistency validation - package versions vs changesets","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/validators-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-semver-consistency_1.0.0_1760223195031_0.8097407914438803","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bernierllc/validators-semver-consistency","version":"1.0.1","keywords":["semver","validation","versioning","changelog","changesets","package-management","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-semver-consistency@1.0.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"755da458feab23ff74274cf0529171734b23d8e0","tarball":"https://registry.npmjs.org/@bernierllc/validators-semver-consistency/-/validators-semver-consistency-1.0.1.tgz","fileCount":17,"integrity":"sha512-CqP/lxqzce9Sv85b3/tgWwo7x04AR6mVLUc+IaGSXhV2pMNMx2v/5k1po9J9v/qlZLZC/2xCG0YbZCyAnEw4xQ==","signatures":[{"sig":"MEYCIQC8SKldNxE7mPODrDL4V5CBeK+kBEWpFnD7KlOPPfbAHQIhAIycroFyMMpFyCL9eXjU76kAIl1QAeSRN8xl+lsbcI48","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":56966},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"391045f9d8cda761304c883d74b6af7895498698","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"mkbernier","email":"mkbernier@gmail.com"},"_npmVersion":"11.4.2","description":"Semver consistency validation - package versions vs changesets","directories":{},"_nodeVersion":"24.4.1","dependencies":{"@bernierllc/validators-core":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-semver-consistency_1.0.1_1760223343991_0.2957707611329752","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@bernierllc/validators-semver-consistency","version":"1.2.0","keywords":["semver","validation","versioning","changelog","changesets","package-management","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-semver-consistency@1.2.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"209beedb0996d885f8f27da8cce33ca6be5966bd","tarball":"https://registry.npmjs.org/@bernierllc/validators-semver-consistency/-/validators-semver-consistency-1.2.0.tgz","fileCount":17,"integrity":"sha512-GiA9wXNxHw8inPqcFLHTlBLo4C4yUYJ9q7htj6SVlwVDqGOcOvtFGEYXHJaigRJsNQS6Qal8OYseHXRZQcTj5w==","signatures":[{"sig":"MEYCIQCV7FwNtNTd2crcx/mJOS7aTqdCkXmgBF9lCqGClSLnPgIhAKQtGMoFzUZBO6HoOMYdFMLvLrjZTZbFP7Vk+Y2DNRMs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57069},"main":"dist/index.js","types":"dist/index.d.ts","gitHead":"af7e74b3715d56d3a193e1bb6743b337c2b0df6d","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3519c90f-cad5-4132-bd07-1d7d911c6936"}},"_npmVersion":"lerna/9.0.3/node@v20.19.6+x64 (linux)","description":"Semver consistency validation - package versions vs changesets","directories":{},"_nodeVersion":"20.19.6","dependencies":{"@bernierllc/validators-core":"0.1.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-semver-consistency_1.2.0_1767642375523_0.6815845228953941","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@bernierllc/validators-semver-consistency","version":"1.2.1","keywords":["semver","validation","versioning","changelog","changesets","package-management","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-semver-consistency@1.2.1","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"f7e95ba425a4c87a1ec4f3a4165514a4b81f5276","tarball":"https://registry.npmjs.org/@bernierllc/validators-semver-consistency/-/validators-semver-consistency-1.2.1.tgz","fileCount":17,"integrity":"sha512-LDJSrjtPcczqc9+O1KRWZX7pahyfijhBaB28j20nwkgYoG4Tayvo6L+zGTyoWF/JvYnZ02EmSYmt9ehlHBhk1g==","signatures":[{"sig":"MEUCIBVhnhEfxw7iSuiVc+dnHoJ2QE3gAeIKHPgP4owx2x3vAiEA48owdOfaUzAcINCafEwgp1mr6c1SRjCoOqmaHJuwhjQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57011},"main":"dist/index.js","_from":"file:bernierllc-validators-semver-consistency-1.2.1.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3519c90f-cad5-4132-bd07-1d7d911c6936"}},"_resolved":"/tmp/bfd9cc8264538135e3f9cf8b5b600291/bernierllc-validators-semver-consistency-1.2.1.tgz","_integrity":"sha512-LDJSrjtPcczqc9+O1KRWZX7pahyfijhBaB28j20nwkgYoG4Tayvo6L+zGTyoWF/JvYnZ02EmSYmt9ehlHBhk1g==","_npmVersion":"11.11.0","description":"Semver consistency validation - package versions vs changesets","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-semver-consistency_1.2.1_1773078330598_0.00021044093144717557","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@bernierllc/validators-semver-consistency","version":"1.2.2","keywords":["semver","validation","versioning","changelog","changesets","package-management","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-semver-consistency@1.2.2","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"c08493a8c8798235dd64315b1f1cb33210b4d42a","tarball":"https://registry.npmjs.org/@bernierllc/validators-semver-consistency/-/validators-semver-consistency-1.2.2.tgz","fileCount":17,"integrity":"sha512-uo/noY3cfd4B7ufR8CdY2Q5hLDmZ2AwUxBNv8mk5a9wWWXQevjLVkA1wfHNZ7QIt/pk+bc/F1HaTEc30fyFdzg==","signatures":[{"sig":"MEYCIQCfp0TpOOMEbeFR/PIWI/lNbPfDHEePvTAgTuhIukm9WQIhAP+vAA4wgq0ozZ1xv9WG6A7TOOKrcUXZn2vdBafNLcsy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57011},"main":"dist/index.js","_from":"file:bernierllc-validators-semver-consistency-1.2.2.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3519c90f-cad5-4132-bd07-1d7d911c6936"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-semver-consistency/bernierllc-validators-semver-consistency-1.2.2.tgz","_integrity":"sha512-uo/noY3cfd4B7ufR8CdY2Q5hLDmZ2AwUxBNv8mk5a9wWWXQevjLVkA1wfHNZ7QIt/pk+bc/F1HaTEc30fyFdzg==","_npmVersion":"11.11.0","description":"Semver consistency validation - package versions vs changesets","directories":{},"_nodeVersion":"20.20.0","dependencies":{"@bernierllc/validators-core":"0.1.4"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-semver-consistency_1.2.2_1773163993777_0.558181135815462","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@bernierllc/validators-semver-consistency","version":"1.3.0","keywords":["semver","validation","versioning","changelog","changesets","package-management","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-semver-consistency@1.3.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"3a864aa04b47112984a7eab596c88c95165b360c","tarball":"https://registry.npmjs.org/@bernierllc/validators-semver-consistency/-/validators-semver-consistency-1.3.0.tgz","fileCount":17,"integrity":"sha512-feuYSUiPMqSkSqOI7sYu0tOTzPzqjOXPyxHnJj9TIRWJQtxhBtcBwFMBuyX+UYbB9pVbBWUSajmedsqyV34nbg==","signatures":[{"sig":"MEUCIQDiJ/H2nhdGoLRwKGyoBJIGM2xkH48TndjBgc/8Tgc5xgIgUiQa+SYuI2pFo4VrHZcTNgnMGBljLBBxC5CwWTVxBbw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57011},"main":"dist/index.js","_from":"file:bernierllc-validators-semver-consistency-1.3.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3519c90f-cad5-4132-bd07-1d7d911c6936"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-semver-consistency/bernierllc-validators-semver-consistency-1.3.0.tgz","_integrity":"sha512-feuYSUiPMqSkSqOI7sYu0tOTzPzqjOXPyxHnJj9TIRWJQtxhBtcBwFMBuyX+UYbB9pVbBWUSajmedsqyV34nbg==","_npmVersion":"11.14.1","description":"Semver consistency validation - package versions vs changesets","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-semver-consistency_1.3.0_1779242229249_0.6461198956664007","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@bernierllc/validators-semver-consistency","version":"1.4.0","keywords":["semver","validation","versioning","changelog","changesets","package-management","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","_id":"@bernierllc/validators-semver-consistency@1.4.0","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"dist":{"shasum":"86a11e9e291544fc85563e5c6a7c259b79c74e5e","tarball":"https://registry.npmjs.org/@bernierllc/validators-semver-consistency/-/validators-semver-consistency-1.4.0.tgz","fileCount":17,"integrity":"sha512-dJM+/Uc8/9o26FqxLuOi5q9sY5AYDiskM/dSctoYI1cerj+iOZPRaeiRgYT4J546SS7XJHQZ75yUl+JFxSmE8A==","signatures":[{"sig":"MEUCIQDDZpxtMXyiUCsvmAzxteohYQl80GMQN8kmgRuUT+xu4wIgG5Rinij2hgA4HnlDSnf+LtC+jeY48iMUs34YXAd4Swc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":57011},"main":"dist/index.js","_from":"file:bernierllc-validators-semver-consistency-1.4.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint 'src/**/*.{ts,tsx}'","test":"jest --watch","build":"tsc","clean":"rm -rf dist","test:run":"jest","test:coverage":"jest --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3519c90f-cad5-4132-bd07-1d7d911c6936"}},"_resolved":"/home/runner/work/tools/tools/packages/validators/validators-semver-consistency/bernierllc-validators-semver-consistency-1.4.0.tgz","_integrity":"sha512-dJM+/Uc8/9o26FqxLuOi5q9sY5AYDiskM/dSctoYI1cerj+iOZPRaeiRgYT4J546SS7XJHQZ75yUl+JFxSmE8A==","_npmVersion":"11.14.1","description":"Semver consistency validation - package versions vs changesets","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@bernierllc/validators-core":"0.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","eslint":"^8.56.0","ts-jest":"^29.1.2","typescript":"^5.3.3","@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/parser":"^7.0.1","@typescript-eslint/eslint-plugin":"^7.0.1"},"_npmOperationalInternal":{"tmp":"tmp/validators-semver-consistency_1.4.0_1779250984079_0.031822057831347283","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@bernierllc/validators-semver-consistency","version":"1.6.0","description":"Semver consistency validation - package versions vs changesets","main":"dist/index.js","types":"dist/index.d.ts","keywords":["semver","validation","versioning","changelog","changesets","package-management","bernierllc","validators"],"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","dependencies":{"@bernierllc/validators-core":"0.4.0"},"devDependencies":{"@types/jest":"^29.5.12","@types/node":"^20.11.19","@typescript-eslint/eslint-plugin":"^7.0.1","@typescript-eslint/parser":"^7.0.1","eslint":"^8.56.0","jest":"^29.7.0","ts-jest":"^29.1.2","typescript":"^5.3.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"scripts":{"build":"tsc","test":"jest --watch","test:run":"jest","test:coverage":"jest --coverage","lint":"eslint 'src/**/*.{ts,tsx}'","clean":"rm -rf dist"},"_id":"@bernierllc/validators-semver-consistency@1.6.0","_integrity":"sha512-736ZsBekEiIqaXbQtWyZwWKkIlBhpBEpV4xTqOBJtUG4L1c82ziIvcnXLGRcFDxe1044zlq/3kjA+OndbP1jrw==","_resolved":"/home/runner/work/tools/tools/packages/validators/validators-semver-consistency/bernierllc-validators-semver-consistency-1.6.0.tgz","_from":"file:bernierllc-validators-semver-consistency-1.6.0.tgz","_nodeVersion":"20.20.2","_npmVersion":"11.14.1","dist":{"integrity":"sha512-736ZsBekEiIqaXbQtWyZwWKkIlBhpBEpV4xTqOBJtUG4L1c82ziIvcnXLGRcFDxe1044zlq/3kjA+OndbP1jrw==","shasum":"40da0f98bfedd462c67791d58b33ba6d410607d2","tarball":"https://registry.npmjs.org/@bernierllc/validators-semver-consistency/-/validators-semver-consistency-1.6.0.tgz","fileCount":19,"unpackedSize":58990,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQC5DaJYvskH1/jp8ayXd/cmZKMUks33U3V4896Vzw0RZwIga1d6PetVYf0ENzQc1VGWBYmoFU6i+5n22HikFKErllo="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3519c90f-cad5-4132-bd07-1d7d911c6936"}},"directories":{},"maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/validators-semver-consistency_1.6.0_1779252270513_0.14330274076564686"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-11T22:53:14.969Z","modified":"2026-05-20T04:44:30.787Z","1.0.0":"2025-10-11T22:53:15.220Z","1.0.1":"2025-10-11T22:55:44.194Z","1.2.0":"2026-01-05T19:46:15.671Z","1.2.1":"2026-03-09T17:45:30.844Z","1.2.2":"2026-03-10T17:33:13.918Z","1.3.0":"2026-05-20T01:57:09.392Z","1.4.0":"2026-05-20T04:23:04.294Z","1.6.0":"2026-05-20T04:44:30.658Z"},"author":{"name":"Matt Bernier","email":"matt@bernierllc.com"},"license":"SEE LICENSE IN LICENSE","keywords":["semver","validation","versioning","changelog","changesets","package-management","bernierllc","validators"],"description":"Semver consistency validation - package versions vs changesets","maintainers":[{"name":"alikhan410","email":"mczeyo@gmail.com"},{"name":"mkbernier","email":"mkbernier@gmail.com"}],"readme":"# @bernierllc/validators-semver-consistency\n\nSemver consistency validation - package versions vs changesets\n\n## Installation\n\n```bash\nnpm install @bernierllc/validators-semver-consistency\n```\n\n## Overview\n\nA primitive validator package that validates semantic versioning consistency between package versions and changesets. Ensures version bumps align with the nature of changes (breaking changes, features, bug fixes) following [Semantic Versioning 2.0.0](https://semver.org/) specification.\n\n## Features\n\n- **Version Bump Validation**: Validates semantic version progression (major, minor, patch)\n- **Breaking Change Detection**: Ensures breaking changes correspond to major version bumps\n- **Feature Addition Validation**: Ensures features correspond to minor version bumps\n- **Bug Fix Validation**: Ensures fixes correspond to patch version bumps\n- **Prerelease Tag Validation**: Validates prerelease tags (alpha, beta, rc, etc.)\n- **Build Metadata Support**: Parses and validates build metadata\n- **Changeset Analysis**: Parses conventional commits, markdown, and simple formats\n- **Flexible Configuration**: Customizable validation rules and allowed prerelease tags\n\n## Usage\n\n### Basic Version Bump Validation\n\n```typescript\nimport { validateSemverConsistency, isValidVersionBump } from '@bernierllc/validators-semver-consistency';\n\n// Validate a version bump\nconst problems = await validateSemverConsistency('1.0.0 -> 1.1.0');\n\nif (problems.filter(p => p.severity === 'error').length === 0) {\n  console.log('Valid version bump');\n}\n\n// Quick validation check\nconst isValid = await isValidVersionBump('1.0.0', '1.1.0');\nconsole.log('Is valid:', isValid); // true\n```\n\n### Validation with Changesets\n\n```typescript\nimport { validateSemverConsistency } from '@bernierllc/validators-semver-consistency';\n\n// Validate version bump with changesets\nconst problems = await validateSemverConsistency(\n  '1.0.0 -> 2.0.0 | breaking!: Remove deprecated API\\nfeat: Add new API'\n);\n\n// Check for errors\nconst errors = problems.filter(p => p.severity === 'error');\nif (errors.length > 0) {\n  console.error('Validation failed:', errors.map(e => e.message));\n}\n```\n\n### Comprehensive Analysis\n\n```typescript\nimport { analyzeSemverBump } from '@bernierllc/validators-semver-consistency';\n\n// Analyze version bump with detailed results\nconst result = await analyzeSemverBump(\n  '1.0.0',\n  '2.0.0',\n  'breaking!: Remove deprecated API\\nfeat: Add new API\\nfix: Fix bug'\n);\n\nconsole.log('Is valid:', result.isValid);\nconsole.log('Bump type:', result.versionBump?.type); // 'major'\nconsole.log('Changesets:', result.changesets);\nconsole.log('Problems:', result.problems);\n```\n\n### Custom Validation Options\n\n```typescript\nimport { validateSemverConsistency } from '@bernierllc/validators-semver-consistency';\n\nconst problems = await validateSemverConsistency(\n  '1.0.0 -> 1.1.0-dev.1',\n  {\n    checkBreakingChanges: true,\n    checkFeatureAdditions: true,\n    checkBugFixes: true,\n    validatePreReleaseTags: true,\n    allowedPreReleaseTags: ['dev', 'alpha', 'beta', 'rc'],\n    requireChangelog: false,\n  }\n);\n```\n\n### Using Utility Functions\n\n```typescript\nimport {\n  parseVersion,\n  compareVersions,\n  determineBumpType,\n  isValidSemver,\n  parseChangesets,\n  analyzeRequiredBump,\n} from '@bernierllc/validators-semver-consistency';\n\n// Parse a semantic version\nconst version = parseVersion('1.2.3-alpha.1+build.123');\nconsole.log(version);\n// {\n//   major: 1,\n//   minor: 2,\n//   patch: 3,\n//   prerelease: ['alpha', '1'],\n//   build: ['build', '123'],\n//   raw: '1.2.3-alpha.1+build.123'\n// }\n\n// Compare versions\nconst v1 = parseVersion('1.0.0')!;\nconst v2 = parseVersion('2.0.0')!;\nconsole.log(compareVersions(v2, v1)); // 1 (v2 > v1)\n\n// Determine bump type\nconst bumpType = determineBumpType(v1, v2);\nconsole.log(bumpType); // 'major'\n\n// Validate semver format\nconsole.log(isValidSemver('1.2.3')); // true\nconsole.log(isValidSemver('v1.2.3')); // false\n\n// Parse changesets\nconst changesets = parseChangesets('feat: Add feature\\nfix: Fix bug');\nconsole.log(changesets);\n// [\n//   { type: 'feature', description: 'Add feature', breaking: false },\n//   { type: 'fix', description: 'Fix bug', breaking: false }\n// ]\n\n// Analyze required bump\nconst requiredBump = analyzeRequiredBump(changesets);\nconsole.log(requiredBump); // 'minor'\n```\n\n## Changeset Formats\n\nThe validator supports multiple changeset formats:\n\n### Conventional Commits\n\n```\nfeat: Add new feature\nfix: Fix bug\nbreaking!: Remove deprecated API\nfeat(api): Add new endpoint\n```\n\n### Markdown Format\n\n```\n- **FEAT**: Add new feature\n- **FIX**: Fix bug\n- **BREAKING**: Remove deprecated API\n```\n\n### Simple Format\n\n```\nFEAT: Add new feature\nFIX: Fix bug\nBREAKING: Remove deprecated API\n```\n\n## Validation Rules\n\n### Version Bump Rule (`semver-version-bump`)\n\nValidates that:\n- New version is greater than old version\n- Version follows semantic versioning format\n- Major bumps reset minor and patch to 0\n- Minor bumps reset patch to 0\n\n### Breaking Change Rule (`semver-breaking-changes`)\n\nValidates that:\n- Breaking changes require major version bump\n- Major bumps (>1.0.0) should have documented breaking changes\n\n### Prerelease Tag Rule (`semver-prerelease-tags`)\n\nValidates that:\n- Prerelease tags are in allowed list (default: alpha, beta, rc)\n- Prerelease format includes version number (e.g., alpha.1)\n- Prerelease version numbers are numeric\n\n## Options\n\n```typescript\ninterface SemverConsistencyOptions {\n  /**\n   * Check breaking change alignment with major version bumps\n   * @default true\n   */\n  checkBreakingChanges?: boolean;\n\n  /**\n   * Validate feature additions correspond to minor version bumps\n   * @default true\n   */\n  checkFeatureAdditions?: boolean;\n\n  /**\n   * Validate bug fixes correspond to patch version bumps\n   * @default true\n   */\n  checkBugFixes?: boolean;\n\n  /**\n   * Validate pre-release tag format (alpha, beta, rc, etc.)\n   * @default true\n   */\n  validatePreReleaseTags?: boolean;\n\n  /**\n   * Validate build metadata format\n   * @default true\n   */\n  validateBuildMetadata?: boolean;\n\n  /**\n   * Validate dependency version consistency\n   * @default true\n   */\n  checkDependencyVersions?: boolean;\n\n  /**\n   * Allowed pre-release tag prefixes\n   * @default ['alpha', 'beta', 'rc']\n   */\n  allowedPreReleaseTags?: string[];\n\n  /**\n   * Require changelog entry for version changes\n   * @default false\n   */\n  requireChangelog?: boolean;\n\n  /**\n   * Minimum version to validate (optional)\n   */\n  minVersion?: string;\n\n  /**\n   * Maximum version to validate (optional)\n   */\n  maxVersion?: string;\n}\n```\n\n## Problem Severity\n\nThe validator returns problems with two severity levels:\n\n- **error**: Version bump violates semantic versioning rules (e.g., breaking change without major bump)\n- **warning**: Best practice violations (e.g., major bump without documented breaking changes)\n\n## Use Cases\n\n### Package Publishing\n\n```typescript\nimport { analyzeSemverBump } from '@bernierllc/validators-semver-consistency';\n\nasync function validateRelease(currentVersion: string, newVersion: string, changelog: string) {\n  const result = await analyzeSemverBump(currentVersion, newVersion, changelog);\n\n  if (!result.isValid) {\n    throw new Error(`Invalid version bump: ${result.problems.map(p => p.message).join(', ')}`);\n  }\n\n  console.log(`✓ Valid ${result.versionBump?.type} bump from ${currentVersion} to ${newVersion}`);\n}\n```\n\n### CI/CD Pipeline\n\n```typescript\nimport { validateSemverConsistency } from '@bernierllc/validators-semver-consistency';\nimport { readFileSync } from 'fs';\n\nasync function validateVersionInCI() {\n  const packageJson = JSON.parse(readFileSync('package.json', 'utf-8'));\n  const changelog = readFileSync('CHANGELOG.md', 'utf-8');\n\n  const problems = await validateSemverConsistency(\n    `${process.env.PREVIOUS_VERSION} -> ${packageJson.version} | ${changelog}`\n  );\n\n  const errors = problems.filter(p => p.severity === 'error');\n  if (errors.length > 0) {\n    console.error('Version validation failed:');\n    errors.forEach(e => console.error(`  - ${e.message}`));\n    process.exit(1);\n  }\n\n  console.log('✓ Version validation passed');\n}\n```\n\n### Changeset Validation\n\n```typescript\nimport { parseChangesets, validateBumpMatchesChangesets } from '@bernierllc/validators-semver-consistency';\n\nfunction validateChangesetFile(changesetPath: string, bumpType: BumpType) {\n  const changesetContent = readFileSync(changesetPath, 'utf-8');\n  const changesets = parseChangesets(changesetContent);\n\n  const result = validateBumpMatchesChangesets(bumpType, changesets);\n\n  if (!result.isValid) {\n    console.error('Changeset validation failed:');\n    result.errors.forEach(e => console.error(`  - ${e}`));\n    return false;\n  }\n\n  return true;\n}\n```\n\n## Integration Status\n\n- **Logger**: not-applicable - Pure validation functions with no side effects\n- **Docs-Suite**: ready - Full JSDoc/TypeDoc documentation with examples\n- **NeverHub**: not-applicable - Primitive validator with no external service dependencies\n\n## Dependencies\n\n- `@bernierllc/validators-core` - Foundation for validation rules and primitives\n\n## Related Validators\n\n- `@bernierllc/validators-changelog-presence` - Validates changelog presence and format\n- `@bernierllc/validators-release` - Domain validator combining release validation rules\n- `@bernierllc/validators-ci-workflow` - Validates CI/CD workflow configurations\n\n## License\n\nCopyright (c) 2025 Bernier LLC. All rights reserved.\n\n## Contributing\n\nThis package follows the BernierLLC package quality standards:\n\n- TypeScript strict mode\n- 85%+ test coverage\n- Zero linting errors\n- Comprehensive documentation\n- Real data testing (minimal mocking)\n\n## Testing\n\n```bash\n# Run tests\nnpm test\n\n# Run tests with coverage\nnpm run test:coverage\n\n# Run tests once (CI mode)\nnpm run test:run\n```\n\n## Building\n\n```bash\n# Build the package\nnpm run build\n\n# Clean build artifacts\nnpm run clean\n```\n\n## Quality Standards\n\nThis package meets BernierLLC quality requirements:\n\n- ✅ TypeScript strict mode enabled\n- ✅ 85%+ test coverage\n- ✅ Zero ESLint errors/warnings\n- ✅ Comprehensive JSDoc documentation\n- ✅ Integration status documented\n- ✅ Real data testing approach\n","readmeFilename":"README.md"}