Releases: fb55/entities
v7.0.1
v7.0.0
No changes in public API; a lot of internals changed though, for faster encoding & decoding and reduced memory usage.
Improvements
Reduced length of the encoded trie by 21% for HTML (from 15,242 words (uint16) to 12075), by:
- Adding a semicolon flag on value nodes, which means semicolons don't have to be encoded anymore.
- Compacting dict keys: two keys are now stored in each word, instead of one
- Compacting runs of 3 or more characters: successive characters are now also stored as two characters per word
Also reduces the size of the encoded table by 32% (after the previous change) by encoding it as base64.
Encodes the encode trie as a string, with a simple parser turning it into the previous structure on load. This leads to a 44% decrease in file size (from 24,034 to 13,392 bytes).
Uses bitmaps to replace regex when looking for ASCII code points that should be replaced with entities. Leads to a ~1.6x speed up for encodeHTML.
Miscellaneous
- Fix broken repository URL in package.json by @ExplodingCabbage in https://github.com/fb55/entities/pull/1919pull/1931
- Use Biome by @fb55 in #1953
New Contributors
- @ExplodingCabbage made their first contribution in #1919
Full Changelog: v6.0.1...v7.0.0
v6.0.1
v6.0.0
Features
- Improved bundler tree shaking by adding pure annotations by @Gravitonic in #1501
- BREAKING: Simplified deep import paths, to make entities work in old NodeJS versions by @fb55 in #1531
- If you are using deep imports, you will have to update them. Instead of importing
entities/dist/decode.js, importentities/decode. The same applies toescape.
- If you are using deep imports, you will have to update them. Instead of importing
- Automated publishes by @fb55 in #1532
entitiesis now available on both npm and JSR
- Enabled isolated declarations by @fb55 in #1522
Full Changelog: v5.0.0...v6.0.0
v5.0.0
What's Changed
- Improved code style (based on
eslint-plugin-unicorn) #1496 - Upgraded toolchain (to tshy, vitest, and tsx) #1497
Breaking Changes
⚠️ BREAKING: Thelibdirectory was renamed todistin #1497. Deep imports will have to be updated.
Full Changelog: v4.5.0...v5.0.0
v4.5.0
New Features
entities now features an EntityDecoder class that can be used to decode entities across multiple chunks. This is needed to parse streams, and will be the foundation for entity decoding in htmlparser2 and parse5.
For users of this library, the most welcome addition will be a new attribute decoding mode, which will ignore some entities that were previously parsed (eg. `foo=bar&=boo' will be left unchanged).
entities' decode functions all use the new decoder under the hood. There is a new decodeHTMLAttribute function for attribute parsing, and some rare edge-cases where entities diverged from the HTML spec have been eliminated.
Relevant PRs
- feat(decode): Add
EntityDecoderclass by @fb55 in #1136 - fix(decode): Handle chunks for numeric entities by @fb55 in #1146
Small Changes
- Typo fixes by @styfle #1032, @Jiralite #1060, and @sandeepkambham08 #1129
- Harden GitHub Actions by @step-security-bot in #928
Full Changelog: v4.4.0...v4.5.0
v4.4.0
- Smaller encode/decode maps by @sapphi-red in #909
- The encode and decode maps are now stored more space-efficiently, saving 44% in minified bundles, and cutting the size of the installed module by 52%.
Please note that some JavaScript minifiers, such as terser, will now produce non-ASCII output. If you use entities in the browser, please make sure you are set up to ship UTF-8 to clients, or set eg. terser's ascii_only option to false.
Full Changelog: v4.3.1...v4.4.0
v4.3.1
v4.3.0
Features
- Added an
escapefile, which is available as an export #786 - Set the
sourceRootproperty in source maps #788- This tells tools where to get the original sources when reading source maps.
Other
- Configure TS to be stricter #787
Full Changelog: v4.2.0...v4.3.0
v4.2.0
Fixes:
- Handle edge-case with surrogate pairs in
encode413c48b
Features:
- Export
replaceCodePointfromentities/lib/decode2247ebe
Other: