mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-19 13:55:21 +00:00
Allow to have middleware for the path same with a HTML page
HTTP allows to change the type of the content to serve by Accept field in the request. The middleware for the path same with a HTML page will be inserted before the HTML renderer, and can take advantage of this feature, using expressjs's "accepts" method, for example.
This commit is contained in:
@@ -45,11 +45,13 @@ function generate_client(routes: Route[], path_to_routes: string, dev_port?: num
|
||||
export const routes = [
|
||||
${routes
|
||||
.map(route => {
|
||||
if (route.type !== 'page') {
|
||||
const page = route.handlers.find(({ type }) => type === 'page');
|
||||
|
||||
if (!page) {
|
||||
return `{ pattern: ${route.pattern}, ignore: true }`;
|
||||
}
|
||||
|
||||
const file = posixify(`${path_to_routes}/${route.file}`);
|
||||
const file = posixify(`${path_to_routes}/${page.file}`);
|
||||
|
||||
if (route.id === '_4xx' || route.id === '_5xx') {
|
||||
return `{ error: '${route.id.slice(1)}', load: () => import(/* webpackChunkName: "${route.id}" */ '${file}') }`;
|
||||
@@ -85,28 +87,36 @@ function generate_server(routes: Route[], path_to_routes: string) {
|
||||
let code = `
|
||||
// This file is generated by Sapper — do not edit it!
|
||||
${routes
|
||||
.map(route => {
|
||||
const file = posixify(`${path_to_routes}/${route.file}`);
|
||||
return route.type === 'page'
|
||||
? `import ${route.id} from '${file}';`
|
||||
: `import * as ${route.id} from '${file}';`;
|
||||
})
|
||||
.map(route =>
|
||||
route.handlers
|
||||
.map(({ type, file }, index) => {
|
||||
const module = posixify(`${path_to_routes}/${file}`);
|
||||
|
||||
return type === 'page'
|
||||
? `import ${route.id}${index} from '${module}';`
|
||||
: `import * as ${route.id}${index} from '${module}';`;
|
||||
})
|
||||
.join('\n')
|
||||
)
|
||||
.join('\n')}
|
||||
|
||||
export const routes = [
|
||||
${routes
|
||||
.map(route => {
|
||||
const file = posixify(`../../${route.file}`);
|
||||
const handlers = route.handlers
|
||||
.map(({ type }, index) =>
|
||||
`{ type: '${type}', module: ${route.id}${index} }`)
|
||||
.join(', ');
|
||||
|
||||
if (route.id === '_4xx' || route.id === '_5xx') {
|
||||
return `{ error: '${route.id.slice(1)}', module: ${route.id} }`;
|
||||
return `{ error: '${route.id.slice(1)}', handlers: [${handlers}] }`;
|
||||
}
|
||||
|
||||
const params = route.params.length === 0
|
||||
? '{}'
|
||||
: `{ ${route.params.map((part, i) => `${part}: match[${i + 1}]`).join(', ')} }`;
|
||||
|
||||
return `{ id: '${route.id}', type: '${route.type}', pattern: ${route.pattern}, params: ${route.params.length > 0 ? `match` : `()`} => (${params}), module: ${route.id} }`;
|
||||
return `{ id: '${route.id}', pattern: ${route.pattern}, params: ${route.params.length > 0 ? `match` : `()`} => (${params}), handlers: [${handlers}] }`;
|
||||
})
|
||||
.join(',\n\t')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user