From fe07125c91524968628069a8eda5ac022d6e15c8 Mon Sep 17 00:00:00 2001 From: Eduardo San Martin Morote Date: Fri, 29 Aug 2025 15:51:34 +0200 Subject: [PATCH] fix: take last value in query params --- .../route-resolver/matchers/matcher-pattern-query.spec.ts | 4 ++-- .../route-resolver/matchers/matcher-pattern-query.ts | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) 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) -- 2.47.3