Status: this should escape text correctly, and it should mostly unescape text correctly. Unfortunately, expanding entities correctly is fraught with historical reasons.
Fortunately, the fine folks at WHATWG have figured it out.
This project dual-licensed under the Apache 2 and MIT licenses. You may choose to use either.
Unless you explicitly state otherwise, any contribution you submit as defined in the Apache 2.0 license shall be dual licensed as above, without any additional terms or conditions.