Skip to content

fix(isISBN): require an ISBN prefix for ISBN-13 values - #2951

Open
BipinBudhathoki01 wants to merge 1 commit into
validatorjs:masterfrom
BipinBudhathoki01:codex/fix-isbn13-prefix
Open

BipinBudhathoki01 wants to merge 1 commit into
validatorjs:masterfrom
BipinBudhathoki01:codex/fix-isbn13-prefix

Conversation

@BipinBudhathoki01

Copy link
Copy Markdown

Reject checksum-valid EAN-13 values that do not use an ISBN prefix.

For example, isISBN('4006381333931', 13) currently returns true. The ISBN-13 regex accepts any 13 digits, so an ordinary product barcode can pass the existing checksum test. Restricting the prefix to 978 or 979 returns false for these values while retaining both ISBN prefix ranges.

Reference: International ISBN Agency — What is an ISBN?, which specifies the 978 and 979 prefix elements.

Adds five regression cases covering automatic version detection and the numeric/string legacy and options-object signatures. Controls cover both prefixes, hyphen/space normalization, incorrect checksums, and checksum-valid EAN-13 values outside the ISBN prefixes. Existing ISBN-10 tests remain unchanged. README documents the prefix check.

Validation on Node v24.1.0 / npm 11.3.0:

  • Five new cases fail on the original implementation.
  • All seven ISBN tests pass after the fix.
  • npm test: builds, lint, and all 328 tests pass.
  • Generated Node, browser, and minified browser forms each pass seven additional ISBN controls.
  • git diff --check passes.

Compatibility: this intentionally rejects previously accepted EAN-13 values with non-ISBN prefixes. No API, dependency, version, checksum algorithm, or ISBN-10 changes. This validates shape/prefix/checksum, not registration-group assignments or actual publication records. The full Node-version CI matrix has not yet run.

Checklist

  • PR contains only changes related; no stray files, etc.
  • README updated (where applicable)
  • Tests written (where applicable)
  • References provided in PR (where applicable)

@codecov

codecov Bot commented Nov 3, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (9ff3424) to head (a5bc329).

Additional details and impacted files
@@            Coverage Diff            @@
##            master     #2951   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files          114       114           
  Lines         2599      2599           
  Branches       658       658           
=========================================
  Hits          2599      2599           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant