Switch to WeakMap and String objects to avoid memory leak. Fixes #20 and #34.
Adding a new PR here to start the discussion on solving #20 again.
-
PR https://github.com/developit/vhtml/pull/23 aims to solve #20 by switching to WeakMap, but it uses string primitives as keys and will throw
TypeError: Invalid value used as weak map key. -
PR https://github.com/developit/vhtml/pull/36 switches to a Set for storing the sanitized strings, but we risk evicting strings from the set before using them, changing the output of
vhtml()to escaped text.
This PR switches to WeakMap (as in https://github.com/developit/vhtml/pull/23), but uses string objects as keys. This will have a performance impact, and change the output from vhtml() from string primitives to string objects.
The question is if it's worth taking the performance impact to solve both #20 and #34.