Back to Explore

jsdom/tr46

GitHub
1 watchersOpen source

Last release: 8 months ago

An implementation of Unicode Technical Standard #46 (Unicode IDNA Compatibility Processing) in JavaScript. Useful for converting domain names between Unicode and ASCII Punycode (via `toASCII` and `toUnicode`), with optional validation controls like bidi, hyphens, joiners, and DNS label length checks.

Project status

  • The repo appears actively maintained, with multiple tagged updates in 2025 (v5.1.0, v5.1.1, v6.0.0) and an upstream push as recent as 2025-11-21.
  • The update cadence looks irregular but active, with about 1 month between v5.1.0 and v5.1.1 (2025-03-15 to 2025-04-17), then about 5 months to v6.0.0 (2025-04-17 to 2025-09-18).

AI summary generated Today

AI-generated from public sources. May be inaccurate. Report

Recent updates

  • v6.0.0

    8 months ago

    Version 6.0.0 updates the library to Unicode 17.0.0, which the release notes tie to a TR 46 revision 35 update. It also raises the minimum supported Node.js version to v20. The code diff, however, includes several additional build and CI changes not mentioned in the release notes.

    Breaking
  • v5.1.1

    4/17/2025

    Release v5.1.1 fixes a regression affecting behavior when the `useSTD3ASCIIRules` option is set to `true`. The code change corrects how STD3 ASCII label validation is performed for ASCII characters, and adds a dedicated test suite to cover the option.

  • v5.1.0

    3/15/2025

    Version 5.1.0 updates the embedded Unicode data to Unicode 16.0.0 and adjusts logic to align with Unicode TR46 revision 33. Release notes are high level and state there are no public API changes, but the code diff shows multiple behavioral changes around validation rules and option handling.

    Breaking
  • v5.0.0

    11/5/2023

    v5.0.0 updates the library to follow Unicode UTS #46 (TR46) Revision 31, aligned with Unicode 15.1.0, and raises the supported Node.js runtime to v18+. The public options API is updated to replace the older `processingOption` string with `transitionalProcessing`, and it adds `ignoreInvalidPunycode`.

    BreakingFeatures
  • v4.1.1

    3/8/2023

    v4.1.1 focuses on fixing how the library handles IDNA labels that include an empty label (for example, domain inputs like xn--4-0bd15808a.). The release notes state that tr46 operations now behave like browsers by passing through empty labels instead of failing under the TR 46 bidi rule ambiguity.

  • v4.1.0

    1/25/2023

    Version 4.1.0 updates the packaged Unicode data tables to align with Unicode 15.0.0 instead of older Unicode 12.1.0-derived tables that were left incomplete in prior releases. The changes are limited to regenerated Unicode classification datasets and the package version bump.

  • v4.0.0

    1/23/2023

    Release v4.0.0 raises the supported Node.js runtime to 14.x and updates Unicode processing to Unicode 15.0.0. It also switches to using the npm punycode package instead of Node.js's deprecated built-in punycode implementation.

    BreakingFeatures