[BUGFIX] do not throw on deepFreezeValue with objects with properties that are JS Proxy instances#2317
Conversation
…hat are JS Proxy instances
|
Thank you for your pull request and welcome to our community. Action RequiredIn order to merge any pull request (code, docs, etc.), we require contributors to sign our Contributor License Agreement, and we don't seem to have one on file for you. ProcessIn order for us to review and merge your suggested changes, please sign at https://code.facebook.com/cla. If you are contributing on behalf of someone else (eg your employer), the individual CLA may not be sufficient and your employer may need to sign the corporate CLA. Once the CLA is signed, our tooling will perform checks and validations. Afterwards, the pull request will be tagged with If you have received this in error or have any questions, please contact us at cla@meta.com. Thanks! |
|
Thank you for signing our Contributor License Agreement. We can now accept your code for this (and any) Meta Open Source project. Thanks! |
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
loadPyodidereturns instance of pyodide, and that instance contains a propertyglobalswhich is a JS Proxy, which is can not frozen.During debugging we have found that the root issue is
deepFreezeValuefunction, that callsObject.freezeon 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
handlerof theProxybehavior, 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.-