fix: prevent double ?? in URL when using query params #87
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.
Problem
Calling
urlFor('route', null, { qs: { var: 'hi' } })produces/route??var=hiinstead of/route?var=hi.Root cause
buildSearchParamsinpackages/core/src/client/serializer.tsreturned the query string with a leading?. However,createURLin@adonisjs/http-serveralready prepends one, resulting in a double
??.Fix
Remove the
?prefix frombuildSearchParamsreturn value, so it returns a bare query string (foo=barinstead of?foo=bar). This is consistent with thesearchParamsStringifiercontract expected by@adonisjs/http-server.Changes
packages/core/src/client/serializer.ts— remove leading?from return valuepackages/core/tests/serializer.spec.ts— update all expectations to match new outputpackages/core/tests/client_extras.spec.ts— add non-regression test that callsurlForwithqsand asserts no??in the resulting URLNon-regression test
The new test in
client_extras.spec.tsexercises the exact bug scenario end-to-end throughurlFor. It was verified to fail before the fix and pass after.