Extract JavaScript UI framework functionality into dedicated testdrive-jsui capability while maintaining 100% functionality preservation and integrating JavaScript tests into the main Python test suite. Phase 1 (Foundation Setup) - COMPLETED: - Created capability directory structure with proper Python package layout - Configured pyproject.toml with Node.js subprocess dependencies - Set up package.json with Jest + JSDOM testing framework - Implemented Python-JavaScript bridge for seamless test integration - Created comprehensive capability Makefile with all testing targets - Added detailed README documentation for capability usage Phase 2 (Integration Layer) - COMPLETED: - Built Python test wrappers for JavaScript test execution via subprocess - Integrated with pytest discovery system for unified test experience - Added capability targets to main Makefile delegation system - Verified test integration works with main test suite Phase 3 (Safe Migration) - COMPLETED: - Copied (not moved) all JavaScript files to capability using safe copy-first approach - Migrated 4 core JavaScript components and 11 test files (2,840+ lines) - Verified all tests work in new location (11 Python tests + 7 JavaScript tests passing) - Maintained dual-track testing capability for safety during transition Phase 4 (Framework Enhancement) - COMPLETED: - Enhanced testing framework with Python integration and coverage reporting - Achieved 59% Python test coverage and 100% JavaScript test coverage - Added performance benchmarking and component documentation Phase 5 (Production Integration) - COMPLETED: - Added standard 'test' target to capability Makefile for discovery system compatibility - Integrated JavaScript tests into main Makefile with new targets: * test-js: Run JavaScript UI tests * test-all: Run all tests (Python + JavaScript + Capabilities) - Updated help documentation to include new testing workflows - Verified capability auto-discovery works via 'make test-capabilities' Key Achievements: - Zero-risk migration completed with copy-first safety approach - Full Python-JavaScript test integration with 18 total passing tests - JavaScript UI framework successfully extracted to dedicated capability - Enhanced CI/CD integration with unified test command interface - Clean architecture enabling future JavaScript framework evolution Testing Status: - ✅ All Python integration tests passing (11/11) - ✅ All JavaScript component tests passing (7/7) - ✅ Capability discovery integration working - ✅ Main test suite integration complete - ✅ Test coverage reporting functional (59% Python, 100% JavaScript) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
entities

Encode & decode HTML & XML entities with ease & speed.
Features
- 😇 Tried and true:
entitiesis used by many popular libraries; eg.htmlparser2, the official AWS SDK andcommonmarkuse it to process HTML entities. - ⚡️ Fast:
entitiesis the fastest library for decoding HTML entities (as of April 2022); see performance. - 🎛 Configurable: Get an output tailored for your needs. You are fine with UTF8? That'll save you some bytes. Prefer to only have ASCII characters? We can do that as well!
How to…
…install entities
npm install entities
…use entities
const entities = require("entities");
// Encoding
entities.escapeUTF8("& ü"); // "&#38; ü"
entities.encodeXML("& ü"); // "&#38; ü"
entities.encodeHTML("& ü"); // "&#38; ü"
// Decoding
entities.decodeXML("asdf & ÿ ü '"); // "asdf & ÿ ü '"
entities.decodeHTML("asdf & ÿ ü '"); // "asdf & ÿ ü '"
Performance
This is how entities compares to other libraries on a very basic benchmark
(see scripts/benchmark.ts, for 10,000,000 iterations; lower is better):
| Library | Version | decode perf |
encode perf |
escape perf |
|---|---|---|---|---|
| entities | 3.0.1 |
1.418s | 6.786s | 2.196s |
| html-entities | 2.3.2 |
2.530s | 6.829s | 2.415s |
| he | 1.2.0 |
5.800s | 24.237s | 3.624s |
| parse-entities | 3.0.0 |
9.660s | N/A | N/A |
FAQ
What methods should I actually use to encode my documents?
If your target supports UTF-8, the escapeUTF8 method is going to be your best
choice. Otherwise, use either encodeHTML or encodeXML based on whether
you're dealing with an HTML or an XML document.
You can have a look at the options for the encode and decode methods to see
everything you can configure.
When should I use strict decoding?
When strict decoding, entities not terminated with a semicolon will be ignored. This is helpful for decoding entities in legacy environments.
Why should I use
entitiesinstead of alternative modules?
As of April 2022, entities is a bit faster than other modules. Still, this is
not a very differentiated space and other modules can catch up.
More importantly, you might already have entities in your dependency graph
(as a dependency of eg. cheerio, or htmlparser2), and including it directly
might not even increase your bundle size. The same is true for other entity
libraries, so have a look through your node_modules directory!
Does
entitiessupport tree shaking?
Yes! entities ships as both a CommonJS and a ES module. Note that for best
results, you should not use the encode and decode functions, as they wrap
around a number of other functions, all of which will remain in the bundle.
Instead, use the functions that you need directly.
Acknowledgements
This library wouldn't be possible without the work of these individuals. Thanks to
- @mathiasbynens for his explanations about
character encodings, and his library
he, which was one of the inspirations forentities - @inikulin for his work on optimized tries for
decoding HTML entities for the
parse5project - @mdevils for taking on the challenge of
producing a quick entity library with his
html-entitieslibrary.entitieswould be quite a bit slower if there wasn't any competition. Right nowentitiesis on top, but we'll see how long that lasts!
License: BSD-2-Clause
Security contact information
To report a security vulnerability, please use the Tidelift security contact. Tidelift will coordinate the fix and disclosure.
entities for enterprise
Available as part of the Tidelift Subscription
The maintainers of entities and thousands of other packages are working with
Tidelift to deliver commercial support and maintenance for the open source
dependencies you use to build your applications. Save time, reduce risk, and
improve code health, while paying the maintainers of the exact dependencies you
use.
Learn more.