diff --git a/package-lock.json b/package-lock.json index aae8adfab..10321657e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sapper", - "version": "0.4.0", + "version": "0.5.1", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -5437,6 +5437,11 @@ "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=" }, + "querystringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-1.0.0.tgz", + "integrity": "sha1-YoYkIRLFtxL6ZU5SZlK/ahP/Bcs=" + }, "randomatic": { "version": "1.1.7", "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz", @@ -5746,6 +5751,11 @@ "resolve-from": "1.0.1" } }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=" + }, "resolve": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz", @@ -6640,6 +6650,15 @@ } } }, + "url-parse": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.2.0.tgz", + "integrity": "sha512-DT1XbYAfmQP65M/mE6OALxmXzZ/z1+e5zk2TcSKe/KiYbNGZxgtttzC0mR/sjopbpOXcbniq7eIKmocJnUWlEw==", + "requires": { + "querystringify": "1.0.0", + "requires-port": "1.0.0" + } + }, "util": { "version": "0.10.3", "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", diff --git a/src/runtime/index.ts b/src/runtime/index.ts index ab0ba4a7f..7eec6d631 100644 --- a/src/runtime/index.ts +++ b/src/runtime/index.ts @@ -28,8 +28,12 @@ function select_route(url: URL): Target { const params = route.params(match); const query: Record = {}; - for (const [key, value] of url.searchParams) query[key] = value || true; - + if (url.search.length > 0) { + url.search.slice(1).split('&').forEach(searchParam => { + const [, key, value] = /([^=]+)=(.*)/.exec(searchParam); + query[key] = value || true; + }) + } return { url, route, data: { params, query } }; } }