fix res.json() to accept non-object input #426
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.
Just like the express.js documentation, the tinyhttp documentation says
However, only Objects (incl. Arrays),
null
andundefined
are currently supported. Also, the current implementation has an undocumented special handling of Strings, simply assuming they are JSON strings instead of usingJSON.stringify()
(as the documentation explicitly says and as express.js does; i would argue: as users would reasonably expect).In short: neither
res.json(true)
norres.json(123)
works yet.This PR fixes the current implementation to also support inputs of type
boolean
andnumber
. It does not remove the special handling ofstring
inputs, as this would be a breaking change (though IMO that should be done for the next major version).As it should pass linter tests, this PR also replaces
any
types. This breaks the signatureres.send(body: string, encoding: BufferEncoding, cb?: () => void)
, which I can only imagine being not much of a big deal.Only the send package is affected.
As a positive side effect, this PR reduces the code size.