MCPcopy Index your code
hub / github.com/angular/angular-cli / handleRoute

Function handleRoute

packages/angular/ssr/src/routes/ng-routes.ts:146–244  ·  view source on GitHub ↗

* 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;
})

Source from the content-addressed store, hash-verified

144 * @returns An async iterable iterator yielding `RouteTreeNodeMetadata` or an error object.
145 */
146async 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

Callers 1

traverseRoutesConfigFunction · 0.85

Calls 7

appendPreloadToMetadataFunction · 0.85
handleSSGRouteFunction · 0.85
resolveRedirectToFunction · 0.85
traverseRoutesConfigFunction · 0.85
getMethod · 0.65
valuesMethod · 0.45

Tested by

no test coverage detected