fix(util): cross realm IsPlainObject check #4627
Merged
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.
I ran into an issue when creating zod schemas and passing them into a
vm.Script
which then performs validation on objects created in that script. Here's a test which illustrates the issue:which outputs:
The issue stems from the fact that inside the context there's a different
Object
constructor henceisPlainObject
fails which produces the error. Ive adapted theisPlainObject
to include additional checks if the previous one hasn't been conclusive. The fix is inspired by: https://www.npmjs.com/package/is-plain-objectI've kept the fast path the same as in the original implementation