From 24b27491cbaafd01ed1586d00d662e7411859f95 Mon Sep 17 00:00:00 2001 From: Jean Atsumi Flaherty Date: Mon, 26 Apr 2021 19:06:00 -0600 Subject: [PATCH] alternativeRoute for endpoints --- .../src/core/create_manifest_data/index.js | 88 ++++++++++--------- 1 file changed, 46 insertions(+), 42 deletions(-) diff --git a/packages/kit/src/core/create_manifest_data/index.js b/packages/kit/src/core/create_manifest_data/index.js index 8e6f1821818a..584fdfc26062 100644 --- a/packages/kit/src/core/create_manifest_data/index.js +++ b/packages/kit/src/core/create_manifest_data/index.js @@ -159,58 +159,62 @@ export default function create_manifest_data({ config, output, cwd = process.cwd layout_reset ? [layout_reset] : layout_stack.concat(layout), layout_reset ? [error] : error_stack.concat(error) ); - } else if (item.is_page) { - const id = components.length.toString(); - components.push(item.file); - + } else { const alternates = config.kit.alternateRoutes ? config.kit.alternateRoutes(segments) : [segments]; - const a = layout_stack.concat(item.file); - const b = error_stack; - - alternates.forEach((segments) => { - const pattern = get_pattern(segments, true); + if (item.is_page) { + const id = components.length.toString(); + components.push(item.file); - let i = a.length; - while (i--) { - if (!b[i] && !a[i]) { - b.splice(i, 1); - a.splice(i, 1); - } - } + const a = layout_stack.concat(item.file); + const b = error_stack; - i = b.length; - while (i--) { - if (b[i]) break; - } + alternates.forEach((segments) => { + const pattern = get_pattern(segments, true); - b.splice(i + 1); + let i = a.length; + while (i--) { + if (!b[i] && !a[i]) { + b.splice(i, 1); + a.splice(i, 1); + } + } - const path = segments.every((segment) => segment.length === 1 && !segment[0].dynamic) - ? `/${segments.map((segment) => segment[0].content).join('/')}` - : null; + i = b.length; + while (i--) { + if (b[i]) break; + } - routes.push({ - id, - type: 'page', - pattern, - params, - path, - a, - b + b.splice(i + 1); + + const path = segments.every((segment) => segment.length === 1 && !segment[0].dynamic) + ? `/${segments.map((segment) => segment[0].content).join('/')}` + : null; + + routes.push({ + id, + type: 'page', + pattern, + params, + path, + a, + b + }); }); - }); - } else { - const pattern = get_pattern(segments, !item.route_suffix); - - routes.push({ - type: 'endpoint', - pattern, - file: item.file, - params - }); + } else { + alternates.forEach((segments) => { + const pattern = get_pattern(segments, !item.route_suffix); + + routes.push({ + type: 'endpoint', + pattern, + file: item.file, + params + }); + }); + } } }); }