* Handles a single route within the route tree and yields metadata or errors. * * @param options - Configuration options for handling the route. * @returns An async iterable iterator yielding `RouteTreeNodeMetadata` or an error object.
(options: {
metadata: ServerConfigRouteTreeNodeMetadata;
currentRoutePath: string;
route: Route;
compiler: Compiler;
parentInjector: Injector;
serverConfigRouteTree?: RouteTree<ServerConfigRouteTreeAdditionalMetadata>;
invokeGetPrerenderParams: boolean;
includePrerenderFallbackRoutes: boolean;
entryPointToBrowserMapping?: EntryPointToBrowserMapping;
})
| 144 | * @returns An async iterable iterator yielding `RouteTreeNodeMetadata` or an error object. |
| 145 | */ |
| 146 | async function* handleRoute(options: { |
| 147 | metadata: ServerConfigRouteTreeNodeMetadata; |
| 148 | currentRoutePath: string; |
| 149 | route: Route; |
| 150 | compiler: Compiler; |
| 151 | parentInjector: Injector; |
| 152 | serverConfigRouteTree?: RouteTree<ServerConfigRouteTreeAdditionalMetadata>; |
| 153 | invokeGetPrerenderParams: boolean; |
| 154 | includePrerenderFallbackRoutes: boolean; |
| 155 | entryPointToBrowserMapping?: EntryPointToBrowserMapping; |
| 156 | }): AsyncIterableIterator<RouteTreeNodeMetadata | { error: string }> { |
| 157 | try { |
| 158 | const { |
| 159 | metadata, |
| 160 | currentRoutePath, |
| 161 | route, |
| 162 | compiler, |
| 163 | parentInjector, |
| 164 | serverConfigRouteTree, |
| 165 | entryPointToBrowserMapping, |
| 166 | invokeGetPrerenderParams, |
| 167 | includePrerenderFallbackRoutes, |
| 168 | } = options; |
| 169 | |
| 170 | const { redirectTo, loadChildren, loadComponent, children, ɵentryName } = route; |
| 171 | if (ɵentryName && loadComponent) { |
| 172 | appendPreloadToMetadata(ɵentryName, entryPointToBrowserMapping, metadata); |
| 173 | } |
| 174 | |
| 175 | if (metadata.renderMode === RenderMode.Prerender) { |
| 176 | yield* handleSSGRoute( |
| 177 | serverConfigRouteTree, |
| 178 | typeof redirectTo === 'string' ? redirectTo : undefined, |
| 179 | metadata, |
| 180 | parentInjector, |
| 181 | invokeGetPrerenderParams, |
| 182 | includePrerenderFallbackRoutes, |
| 183 | ); |
| 184 | } else if (redirectTo !== undefined) { |
| 185 | if (metadata.status && !isValidRedirectResponseCode(metadata.status)) { |
| 186 | yield { |
| 187 | error: |
| 188 | `The '${metadata.status}' status code is not a valid redirect response code. ` + |
| 189 | `Please use one of the following redirect response codes: ${[...VALID_REDIRECT_RESPONSE_CODES.values()].join(', ')}.`, |
| 190 | }; |
| 191 | } else if (typeof redirectTo === 'string') { |
| 192 | yield { |
| 193 | ...metadata, |
| 194 | redirectTo: resolveRedirectTo(metadata.route, redirectTo), |
| 195 | }; |
| 196 | } else { |
| 197 | yield metadata; |
| 198 | } |
| 199 | } else { |
| 200 | yield metadata; |
| 201 | } |
| 202 | |
| 203 | // Recursively process child routes |
no test coverage detected