From 25dbe7cfc193d844d8247435846cf5ce92a6cf5c Mon Sep 17 00:00:00 2001 From: Alan Agius Date: Fri, 31 Jan 2025 12:36:21 +0000 Subject: [PATCH] refactor(@angular/ssr): simplify preload append logic in metadata Replace `filter` and `map` with a `for...of` loop to improve readability in the preload append logic within metadata. --- packages/angular/ssr/src/routes/ng-routes.ts | 30 +++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/packages/angular/ssr/src/routes/ng-routes.ts b/packages/angular/ssr/src/routes/ng-routes.ts index 97d77e072c..fbdf307561 100644 --- a/packages/angular/ssr/src/routes/ng-routes.ts +++ b/packages/angular/ssr/src/routes/ng-routes.ts @@ -327,21 +327,31 @@ function appendPreloadToMetadata( metadata: ServerConfigRouteTreeNodeMetadata, includeDynamicImports: boolean, ): void { - if (!entryPointToBrowserMapping) { + const existingPreloads = metadata.preload ?? []; + if (!entryPointToBrowserMapping || existingPreloads.length >= MODULE_PRELOAD_MAX) { return; } const preload = entryPointToBrowserMapping[entryName]; - - if (preload?.length) { - // Merge existing preloads with new ones, ensuring uniqueness and limiting the total to the maximum allowed. - const preloadPaths = - preload - .filter(({ dynamicImport }) => includeDynamicImports || !dynamicImport) - .map(({ path }) => path) ?? []; - const combinedPreloads = [...(metadata.preload ?? []), ...preloadPaths]; - metadata.preload = Array.from(new Set(combinedPreloads)).slice(0, MODULE_PRELOAD_MAX); + if (!preload?.length) { + return; } + + // Merge existing preloads with new ones, ensuring uniqueness and limiting the total to the maximum allowed. + const combinedPreloads: Set = new Set(existingPreloads); + for (const { dynamicImport, path } of preload) { + if (dynamicImport && !includeDynamicImports) { + continue; + } + + combinedPreloads.add(path); + + if (combinedPreloads.size === MODULE_PRELOAD_MAX) { + break; + } + } + + metadata.preload = Array.from(combinedPreloads); } /**