|
1 | 1 | import type { RouteData } from '../../types/public/internal.js'; |
| 2 | +import type { IntegrationResolvedRoute } from '../../types/public/integrations.js'; |
2 | 3 | import type { RouteInfo } from '../app/types.js'; |
3 | 4 | import type { RoutesList } from '../../types/astro.js'; |
4 | 5 | import { isRoute404, isRoute500 } from './internal/route-errors.js'; |
@@ -62,3 +63,27 @@ export function getCustom404Route(manifestData: RoutesList): RouteData | undefin |
62 | 63 | export function getCustom500Route(manifestData: RoutesList): RouteData | undefined { |
63 | 64 | return manifestData.routes.find((r) => isRoute500(r.route)); |
64 | 65 | } |
| 66 | + |
| 67 | +export function hasNonPrerenderedProjectRoute( |
| 68 | + routes: Array<Pick<RouteData, 'type' | 'origin' | 'prerender'>>, |
| 69 | + options?: { includeEndpoints?: boolean }, |
| 70 | +): boolean; |
| 71 | +export function hasNonPrerenderedProjectRoute( |
| 72 | + routes: Array<Pick<IntegrationResolvedRoute, 'type' | 'origin' | 'isPrerendered'>>, |
| 73 | + options?: { includeEndpoints?: boolean }, |
| 74 | +): boolean; |
| 75 | +export function hasNonPrerenderedProjectRoute( |
| 76 | + routes: Array< |
| 77 | + | Pick<RouteData, 'type' | 'origin' | 'prerender'> |
| 78 | + | Pick<IntegrationResolvedRoute, 'type' | 'origin' | 'isPrerendered'> |
| 79 | + >, |
| 80 | + options?: { includeEndpoints?: boolean }, |
| 81 | +): boolean { |
| 82 | + const includeEndpoints = options?.includeEndpoints ?? true; |
| 83 | + const routeTypes: ReadonlyArray<string> = includeEndpoints ? ['page', 'endpoint'] : ['page']; |
| 84 | + |
| 85 | + return routes.some((route) => { |
| 86 | + const isPrerendered = 'isPrerendered' in route ? route.isPrerendered : route.prerender; |
| 87 | + return routeTypes.includes(route.type) && route.origin === 'project' && !isPrerendered; |
| 88 | + }); |
| 89 | +} |
0 commit comments