Repository navigation
fix(logger): handle bare null-prototype metadata messages - #2655
Open
sergioperezcheco wants to merge 1 commit into
Open
sergioperezcheco wants to merge 1 commit into
sergioperezcheco wants to merge 1 commit into
Conversation
Preserve custom coercion and proxy behavior, including util shims without proxy detection. Assisted-by: Hermes Signed-off-by: sergioperezcheco <checo520@outlook.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
The reproduction in #2267 throws before formats or transports can receive the record: concatenating
meta.messagefails when it is a bare null-prototype dictionary. Use the existingsafe-stable-stringifydependency for those dictionaries, including circular ones, while retaining ordinary object/string conversion and user-defined hooks. This is deliberately limited to direct null-prototype objects without conversion properties; proxies and other coercion failures keep their existing behavior.The conversion check does not invoke hook getters or inspect proxies. Browser
utilshims can expose anisProxyfunction that throws, so proxy-detection capability is probed once on an internal object. Without that capability the original conversion behavior is retained, including the existing null-prototype error; this change does not claim to fix that browser case.Regression tests cover the original crash, circular dictionaries, ordinary conversion, getter read counts, exact user-exception propagation, proxy traps, metadata preservation, and missing/throwing
utilshims. On Node 22/macOS, the logger tests, public Stream/JSON round trips, lint, TypeScript checks, integration tests, and Babel build pass. All 20 unit suites complete with 254 passing tests and 3 todos, but Jest does not exit naturally because of an existing tail-file timer; the pristine baseline also exhibits this problem. The realutil@0.12.5shim was checked against source and built code through Node module resolution, not a browser runtime. Other CI platforms and Node versions remain for CI.AI-assisted implementation and independent automated review used Hermes; no human review is claimed. Fixes #2267 for the Node reproduction described above.