Skip to content
This repository was archived by the owner on Dec 30, 2023. It is now read-only.

Commit de72b18

Browse files
authored
Merge pull request #15 from lydell/query-param-precedence
Query param precedence
2 parents 18b3cc7 + 482f09f commit de72b18

File tree

5 files changed

+43
-35
lines changed

5 files changed

+43
-35
lines changed

package-lock.json

Lines changed: 27 additions & 28 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
"babel-preset-react": "^6.23.0",
2323
"babel-preset-stage-2": "^6.22.0",
2424
"jest": "^22.4.3",
25-
"next": "7.0.2",
26-
"react": "16.7.0",
27-
"react-dom": "16.7.0",
25+
"next": "^7.0.2",
26+
"react": "^16.7.0",
27+
"react-dom": "^16.7.0",
2828
"regenerator-runtime": "^0.11.1",
2929
"webpack": "^2.2.1",
3030
"webpack-node-externals": "^1.5.4"

src/Router.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ class Router {
5555
if (acc.page) return acc
5656
const { pathname, query: queryParams } = urlLib.parse(url, true)
5757
const params = match(pattern)(pathname)
58-
if (params) return { page, params: { ...params, ...queryParams } }
58+
if (params) return { page, params: { ...queryParams, ...params } }
5959
else return acc
6060
}, {})
6161
}

tests/Router.test.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,12 @@ test('getMatchingRoute should should decode query params', () => {
1010
params: { test: 'ä' },
1111
})
1212
})
13+
14+
test('getMatchingRoute should give precedence to inline params', () => {
15+
const router = new Router()
16+
router.add({ name: 'film', pattern: '/films/:id' })
17+
expect(router.getMatchingRoute('/films/2?utm_campaign=website&id=1')).toEqual({
18+
page: '/film',
19+
params: { id: '2', utm_campaign: 'website' },
20+
})
21+
})

yarn.lock

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5065,7 +5065,7 @@ neo-async@^2.5.0:
50655065
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.0.tgz#b9d15e4d71c6762908654b5183ed38b753340835"
50665066
integrity sha512-MFh0d/Wa7vkKO3Y3LlacqAEeHK0mckVqzDieUKTT+KGxi+zIpeVsFxymkIiRpbpDziHc290Xr9A1O4Om7otoRA==
50675067

5068-
next@7.0.2:
5068+
next@^7.0.2:
50695069
version "7.0.2"
50705070
resolved "https://registry.yarnpkg.com/next/-/next-7.0.2.tgz#5ff6b3f0e6cf03ce539d5779a55dc1f8fb1759d7"
50715071
integrity sha512-DOPKKk+2rAEvXS/JMaZL5+jd2WUJI5BEv8xXiR4ijqIuvAL0dI/cT8H6bhFCqbYIgFNuefp+NSVh2kvxpELyeg==
@@ -5840,7 +5840,7 @@ rc@~1.1.6:
58405840
minimist "^1.2.0"
58415841
strip-json-comments "~1.0.4"
58425842

5843-
react-dom@16.7.0:
5843+
react-dom@^16.7.0:
58445844
version "16.7.0"
58455845
resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-16.7.0.tgz#a17b2a7ca89ee7390bc1ed5eb81783c7461748b8"
58465846
integrity sha512-D0Ufv1ExCAmF38P2Uh1lwpminZFRXEINJe53zRAbm4KPwSyd6DY/uDoS0Blj9jvPpn1+wivKpZYc8aAAN/nAkg==
@@ -5855,7 +5855,7 @@ react-error-overlay@4.0.0:
58555855
resolved "https://registry.yarnpkg.com/react-error-overlay/-/react-error-overlay-4.0.0.tgz#d198408a85b4070937a98667f500c832f86bd5d4"
58565856
integrity sha512-FlsPxavEyMuR6TjVbSSywovXSEyOg6ZDj5+Z8nbsRl9EkOzAhEIcS+GLoQDC5fz/t9suhUXWmUrOBrgeUvrMxw==
58575857

5858-
react@16.7.0:
5858+
react@^16.7.0:
58595859
version "16.7.0"
58605860
resolved "https://registry.yarnpkg.com/react/-/react-16.7.0.tgz#b674ec396b0a5715873b350446f7ea0802ab6381"
58615861
integrity sha512-StCz3QY8lxTb5cl2HJxjwLFOXPIFQp+p+hxQfc8WE0QiLfCtIlKj8/+5tjjKm8uSTlAW+fCPaavGFS06V9Ar3A==

0 commit comments

Comments
 (0)