-
-
Notifications
You must be signed in to change notification settings - Fork 34.4k
lib: refactor validators #26809
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
lib: refactor validators #26809
Conversation
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
4 tasks
Member
Author
|
It would be nice to get some reviews here. This is a code cleanup that I wanted to do after working on #26738. |
d6124a8 to
d5b5505
Compare
Member
Author
mcollina
approved these changes
Mar 24, 2019
Member
mcollina
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
jasnell
approved these changes
Mar 25, 2019
Member
Author
Collaborator
Collaborator
The function did not only validate the mode but it returns a new value depending on the input. Thus `validate` did not seem to be an appropriate name.
This makes sure the validation functions do not cause any side effects. Validation functions should ideally only validate the input without any other effect. Since the input value must be known from the callee, there is no reason to return the input value.
The function did not only validate the timer but it caused side effects like a warning and potentially returned a different value than the input value. Thus the name `validate` did not seem to be appropriate.
The name indicated only validation while it did much more and it returned a different value to the callee function. The underscore was also not necessary as the function is internal one way or the other.
The function did not only validate the input so far but it also made a copy of the input object and returned that copy to the callee function. That copy was not necessary for all call sites and it was not obvious that the function did not only validate the input but that it also returned a copy of it. This makes sure the function does nothing more than validation and copying is happening in the callee function when required.
This function did not only validate the input but it returned a new value in case the hostname was valid. This simplifies the function by always returning the required value, no matter if it is valid or invalid, so the callee site does not have to check that anymore. On top the function is renamed to `getHostname` to make clear that the function does not only validate the input but it also returns a new value.
The function does not only validate the input but it causes side effects by adding default options to the input object in case the option is not set.
This renames the parameters for clarity and removes the check for undefined encoding. That will always default to `utf8`.
There are lots of places that validate for arrayBufferView and we have multiple functions that do the same thing. Instead, move the validation into `internal/validators` so all files can use that instead. There are more functions throughout the code that do the same but it takes some more work to fully consolidate all of those.
54a6a64 to
595fd96
Compare
Member
Author
|
Rebased due to conflicts. |
Collaborator
Collaborator
BridgeAR
added a commit
to BridgeAR/node
that referenced
this pull request
Mar 27, 2019
The function did not only validate the mode but it returns a new value depending on the input. Thus `validate` did not seem to be an appropriate name. PR-URL: nodejs#26809 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
BridgeAR
added a commit
to BridgeAR/node
that referenced
this pull request
Mar 27, 2019
This makes sure the validation functions do not cause any side effects. Validation functions should ideally only validate the input without any other effect. Since the input value must be known from the callee, there is no reason to return the input value. PR-URL: nodejs#26809 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
BridgeAR
added a commit
to BridgeAR/node
that referenced
this pull request
Mar 27, 2019
The function did not only validate the timer but it caused side effects like a warning and potentially returned a different value than the input value. Thus the name `validate` did not seem to be appropriate. PR-URL: nodejs#26809 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
BridgeAR
added a commit
to BridgeAR/node
that referenced
this pull request
Mar 27, 2019
The name indicated only validation while it did much more and it returned a different value to the callee function. The underscore was also not necessary as the function is internal one way or the other. PR-URL: nodejs#26809 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
BridgeAR
added a commit
to BridgeAR/node
that referenced
this pull request
Mar 27, 2019
The function did not only validate the input so far but it also made a copy of the input object and returned that copy to the callee function. That copy was not necessary for all call sites and it was not obvious that the function did not only validate the input but that it also returned a copy of it. This makes sure the function does nothing more than validation and copying is happening in the callee function when required. PR-URL: nodejs#26809 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
BridgeAR
added a commit
to BridgeAR/node
that referenced
this pull request
Mar 27, 2019
This function did not only validate the input but it returned a new value in case the hostname was valid. This simplifies the function by always returning the required value, no matter if it is valid or invalid, so the callee site does not have to check that anymore. On top the function is renamed to `getHostname` to make clear that the function does not only validate the input but it also returns a new value. PR-URL: nodejs#26809 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
BridgeAR
added a commit
to BridgeAR/node
that referenced
this pull request
Mar 27, 2019
The function does not only validate the input but it causes side effects by adding default options to the input object in case the option is not set. PR-URL: nodejs#26809 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
BridgeAR
added a commit
to BridgeAR/node
that referenced
this pull request
Mar 27, 2019
This renames the parameters for clarity and removes the check for undefined encoding. That will always default to `utf8`. PR-URL: nodejs#26809 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
BridgeAR
added a commit
to BridgeAR/node
that referenced
this pull request
Mar 27, 2019
There are lots of places that validate for arrayBufferView and we have multiple functions that do the same thing. Instead, move the validation into `internal/validators` so all files can use that instead. There are more functions throughout the code that do the same but it takes some more work to fully consolidate all of those. PR-URL: nodejs#26809 Reviewed-By: Matteo Collina <[email protected]> Reviewed-By: James M Snell <[email protected]>
Member
Author
|
Landed in 9d854fb...7bddfcc 🎉 |
Member
|
This depends on a semver-major PR and needs to be manually backported to v11.x-staging |
This was referenced Apr 23, 2019
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Labels
author ready
PRs that have at least one approval, no pending requests for changes, and a CI started.
lib / src
Issues and PRs related to general changes in the lib or src directory.
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.
This makes sure our validator functions actually only validate and have no side effects. Please have a look at the individual commit messages for further details.
It is just a code cleanup and no behavior change.
Checklist
make -j4 test(UNIX), orvcbuild test(Windows) passes