Fix targetType
re-instantiation with constructor arguments when non primitive type is passed
#1826
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.
Description
Some classes accept arguments via their constructors and include internal validations. One such example is the
Timestamp
class defined in firebase-admin/firestore, which performs validation during initialisation.This PR extracts the constructor arguments from the class source string, maps the provided values to the corresponding constructor parameters (assuming the parameters are always assigned to class properties), and uses them to reinitialise the class instance.
Tip
Ideally,
value
parameter sent totransform()
function should be passed directly in such cases. It's unclear why this approach wasn't taken. But since original authors used re-instantiate approach, I am keeping the same.Checklist
Update index.md
)develop
)npm run prettier:check
passesnpm run lint:check
passesFixes
Fixes #1825
Note
This is an internal fix, so documentation updates are not necessary. Let me know if you think it should be documented, and where exactly it should go.