fix(core): prevent private-field brand-check runtime crashes #1648
+102
−18
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.
Changes being requested
Replace class private fields with module-scoped
WeakMaps
to prevent runtime crashes caused by JavaScript private field brand checks across duplicate SDK installations.Core changes:
#private
fields withWeakMap-based
encapsulation in core componentscore/api-promise.ts
,core/pagination.ts
, andcore/streaming.ts
WeakMap
approachTest coverage:
cross-copy
method compatibility works correctlyAdditional context & links
Bug: #1590
This addresses
"TypeError: Cannot read private member"
runtime crashes that occur when methods from different SDK copies interact, particularly in environments with duplicate SDK installations.Problem:
JavaScript private field brand checks fail when instances cross module boundaries between different SDK copies, causing runtime errors in production environments.
Solution:
WeakMaps provide the same encapsulation benefits as private fields, but don't enforce brand checks, allowing instances from different SDK copies to interoperate safely.
Impact:
✅ I understand that this repository is auto-generated, and my pull request may not be merged