Merge pull request #394 from sveltejs/gh-390

omit trailing slash from server route matchers
This commit is contained in:
Rich Harris
2018-08-30 19:37:23 -04:00
committed by GitHub
2 changed files with 7 additions and 7 deletions

View File

@@ -128,12 +128,12 @@ export default function create_routes(cwd = locations.routes()) {
components.push(component); components.push(component);
if (item.basename === 'index.html') { if (item.basename === 'index.html') {
pages.push({ pages.push({
pattern: get_pattern(parent_segments), pattern: get_pattern(parent_segments, true),
parts parts
}); });
} else { } else {
pages.push({ pages.push({
pattern: get_pattern(segments), pattern: get_pattern(segments, true),
parts parts
}); });
} }
@@ -142,7 +142,7 @@ export default function create_routes(cwd = locations.routes()) {
else { else {
server_routes.push({ server_routes.push({
name: `route_${get_slug(item.file)}`, name: `route_${get_slug(item.file)}`,
pattern: get_pattern(segments), pattern: get_pattern(segments, false),
file: item.file, file: item.file,
params: params params: params
}); });
@@ -276,7 +276,7 @@ function get_slug(file: string) {
}); });
} }
function get_pattern(segments: Part[][]) { function get_pattern(segments: Part[][], add_trailing_slash: boolean) {
return new RegExp( return new RegExp(
`^` + `^` +
segments.map(segment => { segments.map(segment => {
@@ -290,6 +290,6 @@ function get_pattern(segments: Part[][]) {
.replace(/%5D/g, ']'); .replace(/%5D/g, ']');
}).join(''); }).join('');
}).join('') + }).join('') +
'\\\/?$' (add_trailing_slash ? '\\\/?$' : '$')
); );
} }

View File

@@ -53,14 +53,14 @@ describe('create_routes', () => {
assert.deepEqual(server_routes, [ assert.deepEqual(server_routes, [
{ {
name: 'route_blog_json', name: 'route_blog_json',
pattern: /^\/blog.json\/?$/, pattern: /^\/blog.json$/,
file: 'blog/index.json.js', file: 'blog/index.json.js',
params: [] params: []
}, },
{ {
name: 'route_blog_$slug_json', name: 'route_blog_$slug_json',
pattern: /^\/blog\/([^\/]+?).json\/?$/, pattern: /^\/blog\/([^\/]+?).json$/,
file: 'blog/[slug].json.js', file: 'blog/[slug].json.js',
params: ['slug'] params: ['slug']
} }