jsdom v9.0.0 Release Notes
-
๐ This major release removes jsdom's support for mutation events. Mutation events were never well-specified, and the modern DOM Standard omits them in the hopes that they can be removed from browsers (although this has not yet happened in major browser engines). We had hoped to implement their modern alternative, mutation observers, before performing this removal, to give jsdom users the same capabilities.
๐ However, recent performance investigations revealed that mutation events were the major bottleneck in most jsdom operations; tools like ecmarkup which make heavy use of jsdom had their running time halved by removing mutation events, which add serious overhead to every DOM mutation. As such, we are doing a major release with them removed, so that jsdom users can benefit from this massive performance gain.
๐ Mutation observer support is in progress; please use the GitHub reactions feature to vote on that issue if you are impacted by this removal and are hoping for mutation observer support to replace it.
๐ฒ Your normal change log follows:
- โ Removed mutation events, as discussed above.
- โ Added the
DOMTokenList.prototype.replace
method. (nicolashenry) - โก๏ธ Updated
DOMTokenList.prototype.contains
to no longer validate its arguments, as per the latest spec. (nicolashenry) - Made various improvements to XMLHttpRequest (nicolashenry):
- Added the
responseURL
property. - Updated methods, headers, and header values to use the
ByteString
algorithm. - Fixed the default
statusText
to be""
instead of"OK"
.
- Added the
- ๐ Fixed the
Blob
constructor'stype
validation. (nicolashenry)