mirror of
https://github.com/kevin-DL/sapper.git
synced 2026-01-13 19:45:26 +00:00
golf things down a bit
This commit is contained in:
@@ -75,62 +75,57 @@ function generate_client(
|
||||
|
||||
const component_indexes: Record<string, number> = {};
|
||||
|
||||
let code = `
|
||||
import root from ${stringify(get_file(path_to_routes, manifest_data.root))};
|
||||
import error from ${stringify(posixify(`${path_to_routes}/_error.html`))};
|
||||
const components = `[
|
||||
${manifest_data.components.map((component, i) => {
|
||||
const annotation = bundler === 'webpack'
|
||||
? `/* webpackChunkName: "${component.name}" */ `
|
||||
: '';
|
||||
|
||||
const d = decodeURIComponent;
|
||||
const source = get_file(path_to_routes, component);
|
||||
|
||||
const components = [
|
||||
${manifest_data.components.map((component, i) => {
|
||||
const annotation = bundler === 'webpack'
|
||||
? `/* webpackChunkName: "${component.name}" */ `
|
||||
: '';
|
||||
component_indexes[component.name] = i;
|
||||
|
||||
const source = get_file(path_to_routes, component);
|
||||
return `{
|
||||
js: () => import(${annotation}${stringify(source)}),
|
||||
css: "__SAPPER_CSS_PLACEHOLDER:${stringify(component.file, false)}__"
|
||||
}`;
|
||||
}).join(',\n\t\t')}
|
||||
]`.replace(/^\t/gm, '').trim();
|
||||
|
||||
component_indexes[component.name] = i;
|
||||
let needs_decode = false;
|
||||
|
||||
return `{
|
||||
js: () => import(${annotation}${stringify(source)}),
|
||||
css: "__SAPPER_CSS_PLACEHOLDER:${stringify(component.file, false)}__"
|
||||
}`;
|
||||
}).join(',\n\t\t\t')}
|
||||
];
|
||||
let pages = `[
|
||||
${manifest_data.pages.map(page => `{
|
||||
// ${page.parts[page.parts.length - 1].component.file}
|
||||
pattern: ${page.pattern},
|
||||
parts: [
|
||||
${page.parts.map(part => {
|
||||
if (part === null) return 'null';
|
||||
|
||||
const manifest = {
|
||||
ignore: [${server_routes_to_ignore.map(route => route.pattern).join(', ')}],
|
||||
if (part.params.length > 0) {
|
||||
needs_decode = true;
|
||||
const props = part.params.map((param, i) => `${param}: d(match[${i + 1}])`);
|
||||
return `{ i: ${component_indexes[part.component.name]}, params: match => ({ ${props.join(', ')} }) }`;
|
||||
}
|
||||
|
||||
pages: [
|
||||
${manifest_data.pages.map(page => `{
|
||||
// ${page.parts[page.parts.length - 1].component.file}
|
||||
pattern: ${page.pattern},
|
||||
parts: [
|
||||
${page.parts.map(part => {
|
||||
if (part === null) return 'null';
|
||||
return `{ i: ${component_indexes[part.component.name]} }`;
|
||||
}).join(',\n\t\t\t\t')}
|
||||
]
|
||||
}`).join(',\n\n\t\t')}
|
||||
]`.replace(/^\t/gm, '').trim();
|
||||
|
||||
if (part.params.length > 0) {
|
||||
const props = part.params.map((param, i) => `${param}: d(match[${i + 1}])`);
|
||||
return `{ component: components[${component_indexes[part.component.name]}], params: match => ({ ${props.join(', ')} }) }`;
|
||||
}
|
||||
if (needs_decode) {
|
||||
pages = `(d => ${pages})(decodeURIComponent)`
|
||||
}
|
||||
|
||||
return `{ component: components[${component_indexes[part.component.name]}] }`;
|
||||
}).join(',\n\t\t\t\t\t\t')}
|
||||
]
|
||||
}`).join(',\n\n\t\t\t\t')}
|
||||
],
|
||||
|
||||
root,
|
||||
|
||||
error
|
||||
};`.replace(/^\t\t/gm, '').trim();
|
||||
let footer = '';
|
||||
|
||||
if (dev()) {
|
||||
const sapper_dev_client = posixify(
|
||||
path.resolve(__dirname, '../sapper-dev-client.js')
|
||||
);
|
||||
|
||||
code += `
|
||||
footer = `
|
||||
|
||||
import(${stringify(sapper_dev_client)}).then(client => {
|
||||
client.connect(${dev_port});
|
||||
@@ -138,7 +133,12 @@ function generate_client(
|
||||
}
|
||||
|
||||
return `// This file is generated by Sapper — do not edit it!\n` + template
|
||||
.replace(/const manifest = __MANIFEST__;/, code);
|
||||
.replace('__ROOT__', stringify(get_file(path_to_routes, manifest_data.root), false))
|
||||
.replace('__ERROR__', stringify(posixify(`${path_to_routes}/_error.html`), false))
|
||||
.replace('__IGNORE__', `[${server_routes_to_ignore.map(route => route.pattern).join(', ')}]`)
|
||||
.replace('__COMPONENTS__', components)
|
||||
.replace('__PAGES__', pages) +
|
||||
footer;
|
||||
}
|
||||
|
||||
function generate_server(
|
||||
|
||||
Reference in New Issue
Block a user