From: Eduardo San Martin Morote Date: Fri, 29 Aug 2025 13:51:34 +0000 (+0200) Subject: fix: take last value in query params X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fe07125c91524968628069a8eda5ac022d6e15c8;p=thirdparty%2Fvuejs%2Frouter.git fix: take last value in query params --- diff --git a/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.spec.ts b/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.spec.ts index 95f7ba0c..a9ad79b7 100644 --- a/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.spec.ts +++ b/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.spec.ts @@ -19,7 +19,7 @@ describe('MatcherPatternQueryParam', () => { expect(matcher.match({ user_id: 'abc123' })).toEqual({ userId: 'abc123' }) }) - it('takes first value from array', () => { + it('takes last value from array', () => { const matcher = new MatcherPatternQueryParam( 'userId', 'user_id', @@ -27,7 +27,7 @@ describe('MatcherPatternQueryParam', () => { PARAM_PARSER_DEFAULTS ) expect(matcher.match({ user_id: ['first', 'second'] })).toEqual({ - userId: 'first', + userId: 'second', }) }) diff --git a/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.ts b/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.ts index 0502f027..559b6795 100644 --- a/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.ts +++ b/packages/router/src/experimental/route-resolver/matchers/matcher-pattern-query.ts @@ -32,12 +32,13 @@ export class MatcherPatternQueryParam match(query: MatcherQueryParams): Record { const queryValue: MatcherQueryParamsValue | undefined = query[this.queryKey] - // Check if query param is missing for default value handling - + // normalize the value coming from the query based on the expected format + // value => keep the last value if multiple + // array => null becomes [], single value becomes [value] let valueBeforeParse = this.format === 'value' ? Array.isArray(queryValue) - ? queryValue[0] + ? queryValue.at(-1) : queryValue : // format === 'array' Array.isArray(queryValue)