[BUGFIX] do not throw on deepFreezeValue with objects with properties that are JS Proxy instances #2317
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Together with https://github.com/it-mukaseev we met an issue when trying to use recoil with pyodie.
pyodide is a library for running scripts in a browser, that how it is being loaded:
the
loadPyodide
returns instance of pyodide, and that instance contains a propertyglobals
which is a JS Proxy, which is can not frozen.During debugging we have found that the root issue is
deepFreezeValue
function, that callsObject.freeze
on the proxy with not frozen target.Proxy with not frozen target can not be frozen, so one solution is to froze the target, but that can break the
handler
of theProxy
behavior, so that is a bad decision. And calling the freeze on proxy with not frozen is not possible, so the only solution is to ignore proxy objects and leave up to the consumers of the package.-