/opt/canhelp/node_modules/next/dist/build/static-paths
NameSizeModeActions
app.d.ts63420644editdlrm
app.js324890644editdlrm
app.js.map497900644editdlrm
pages.d.ts3910644editdlrm
pages.js92250644editdlrm
pages.js.map134680644editdlrm
types.d.ts13180644editdlrm
types.js1150644editdlrm
types.js.map670644editdlrm
utils.d.ts4990644editdlrm
utils.js10270644editdlrm
utils.js.map13350644editdlrm
Edit: /opt/canhelp/node_modules/next/dist/build/static-paths/app.js.map (49790B)
{"version":3,"sources":["../../../src/build/static-paths/app.ts"],"sourcesContent":["import type { Params } from '../../server/request/params'\nimport type { AppPageModule } from '../../server/route-modules/app-page/module'\nimport type { AppSegment } from '../segment-config/app/app-segments'\nimport type { PrerenderedRoute, StaticPathsResult } from './types'\n\nimport path from 'node:path'\nimport { AfterRunner } from '../../server/after/run-with-after'\nimport { createWorkStore } from '../../server/async-storage/work-store'\nimport { FallbackMode } from '../../lib/fallback'\nimport { getRouteMatcher } from '../../shared/lib/router/utils/route-matcher'\nimport {\n getRouteRegex,\n type RouteRegex,\n} from '../../shared/lib/router/utils/route-regex'\nimport type { IncrementalCache } from '../../server/lib/incremental-cache'\nimport { normalizePathname, encodeParam } from './utils'\nimport escapePathDelimiters from '../../shared/lib/router/utils/escape-path-delimiters'\nimport { createIncrementalCache } from '../../export/helpers/create-incremental-cache'\nimport type { NextConfigComplete } from '../../server/config-shared'\nimport type { WorkStore } from '../../server/app-render/work-async-storage.external'\n\n/**\n * Filters out duplicate parameters from a list of parameters.\n * This function uses a Map to efficiently store and retrieve unique parameter combinations.\n *\n * @param routeParamKeys - The keys of the parameters. These should be sorted to ensure consistent key generation.\n * @param routeParams - The list of parameter objects to filter.\n * @returns A new array containing only the unique parameter combinations.\n */\nexport function filterUniqueParams(\n routeParamKeys: readonly string[],\n routeParams: readonly Params[]\n): Params[] {\n // A Map is used to store unique parameter combinations. The key of the Map\n // is a string representation of the parameter combination, and the value\n // is the actual `Params` object.\n const unique = new Map()\n\n // Iterate over each parameter object in the input array.\n for (const params of routeParams) {\n let key = '' // Initialize an empty string to build the unique key for the current `params` object.\n\n // Iterate through the `routeParamKeys` (which are assumed to be sorted).\n // This consistent order is crucial for generating a stable and unique key\n // for each parameter combination.\n for (const paramKey of routeParamKeys) {\n const value = params[paramKey]\n\n // Construct a part of the key using the parameter key and its value.\n // A type prefix (`A:` for Array, `S:` for String, `U:` for undefined) is added to the value\n // to prevent collisions. For example, `['a', 'b']` and `'a,b'` would\n // otherwise generate the same string representation, leading to incorrect\n // deduplication. This ensures that different types with the same string\n // representation are treated as distinct.\n let valuePart: string\n if (Array.isArray(value)) {\n valuePart = `A:${value.join(',')}`\n } else if (value === undefined) {\n valuePart = `U:undefined`\n } else {\n valuePart = `S:${value}`\n }\n key += `${paramKey}:${valuePart}|`\n }\n\n // If the generated key is not already in the `unique` Map, it means this\n // parameter combination is unique so far. Add it to the Map.\n if (!unique.has(key)) {\n unique.set(key, params)\n }\n }\n\n // Convert the Map's values (the unique `Params` objects) back into an array\n // and return it.\n return Array.from(unique.values())\n}\n\n/**\n * Generates all unique sub-combinations of Route Parameters from a list of Static Parameters.\n * This function creates all possible prefixes of the Route Parameters, which is\n * useful for generating Static Shells that can serve as Fallback Shells for more specific Route Shells.\n *\n * When Root Parameters are provided, the function ensures that Static Shells only\n * include complete sets of Root Parameters. This prevents generating invalid Static Shells\n * that are missing required Root Parameters.\n *\n * Example with Root Parameters ('lang', 'region') and Route Parameters ('lang', 'region', 'slug'):\n *\n * Given the following Static Parameters:\n * ```\n * [\n * { lang: 'en', region: 'US', slug: ['home'] },\n * { lang: 'en', region: 'US', slug: ['about'] },\n * { lang: 'fr', region: 'CA', slug: ['about'] },\n * ]\n * ```\n *\n * The result will be:\n * ```\n * [\n * { lang: 'en', region: 'US' }, // Complete Root Parameters\n * { lang: 'en', region: 'US', slug: ['home'] },\n * { lang: 'en', region: 'US', slug: ['about'] },\n * { lang: 'fr', region: 'CA' }, // Complete Root Parameters\n * { lang: 'fr', region: 'CA', slug: ['about'] },\n * ]\n * ```\n *\n * Note that partial combinations like `{ lang: 'en' }` are NOT generated because\n * they don't include the complete set of Root Parameters.\n *\n * For routes without Root Parameters (e.g., `/[slug]`), all sub-combinations are generated\n * as before.\n *\n * @param routeParamKeys - The keys of the Route Parameters. These should be sorted\n * to ensure consistent key generation for the internal Map.\n * @param routeParams - The list of Static Parameters to filter.\n * @param rootParamKeys - The keys of the Root Parameters. When provided, ensures Static Shells\n * include all Root Parameters.\n * @returns A new array containing all unique sub-combinations of Route Parameters.\n */\nexport function generateAllParamCombinations(\n routeParamKeys: readonly string[],\n routeParams: readonly Params[],\n rootParamKeys: readonly string[]\n): Params[] {\n // A Map is used to store unique combinations of Route Parameters.\n // The key of the Map is a string representation of the Route Parameter\n // combination, and the value is the `Params` object containing only\n // the Route Parameters.\n const combinations = new Map()\n\n // Determine the minimum index where all Root Parameters are included.\n // This optimization ensures we only generate combinations that include\n // a complete set of Root Parameters, preventing invalid Static Shells.\n //\n // For example, if rootParamKeys = ['lang', 'region'] and routeParamKeys = ['lang', 'region', 'slug']:\n // - 'lang' is at index 0, 'region' is at index 1\n // - minIndexForCompleteRootParams = max(0, 1) = 1\n // - We'll only generate combinations starting from index 1 (which includes both lang and region)\n let minIndexForCompleteRootParams = -1\n if (rootParamKeys.length > 0) {\n // Find the index of the last Root Parameter in routeParamKeys.\n // This tells us the minimum combination length needed to include all Root Parameters.\n for (const rootParamKey of rootParamKeys) {\n const index = routeParamKeys.indexOf(rootParamKey)\n if (index === -1) {\n // Root Parameter not found in Route Parameters - this shouldn't happen in normal cases\n // but we handle it gracefully by treating it as if there are no Root Parameters.\n // This allows the function to fall back to generating all sub-combinations.\n minIndexForCompleteRootParams = -1\n break\n }\n // Track the highest index among all Root Parameters.\n // This ensures all Root Parameters are included in any generated combination.\n minIndexForCompleteRootParams = Math.max(\n minIndexForCompleteRootParams,\n index\n )\n }\n }\n\n // Iterate over each Static Parameter object in the input array.\n // Each params object represents one potential route combination (e.g., { lang: 'en', region: 'US', slug: 'home' })\n for (const params of routeParams) {\n // Generate all possible prefix combinations for this Static Parameter set.\n // For routeParamKeys = ['lang', 'region', 'slug'], we'll generate combinations at:\n // - i=0: { lang: 'en' }\n // - i=1: { lang: 'en', region: 'US' }\n // - i=2: { lang: 'en', region: 'US', slug: 'home' }\n //\n // The iteration order is crucial for generating stable and unique keys\n // for each Route Parameter combination.\n for (let i = 0; i < routeParamKeys.length; i++) {\n // Skip generating combinations that don't include all Root Parameters.\n // This prevents creating invalid Static Shells that are missing required Root Parameters.\n //\n // For example, if Root Parameters are ['lang', 'region'] and minIndexForCompleteRootParams = 1:\n // - Skip i=0 (would only include 'lang', missing 'region')\n // - Process i=1 and higher (includes both 'lang' and 'region')\n if (\n minIndexForCompleteRootParams >= 0 &&\n i < minIndexForCompleteRootParams\n ) {\n continue\n }\n\n // Initialize data structures for building this specific combination\n const combination: Params = {}\n const keyParts: string[] = []\n let hasAllRootParams = true\n\n // Build the sub-combination with parameters from index 0 to i (inclusive).\n // This creates a prefix of the full parameter set, building up combinations incrementally.\n //\n // For example, if routeParamKeys = ['lang', 'region', 'slug'] and i = 1:\n // - j=0: Add 'lang' parameter\n // - j=1: Add 'region' parameter\n // Result: { lang: 'en', region: 'US' }\n for (let j = 0; j <= i; j++) {\n const routeKey = routeParamKeys[j]\n\n // Check if the parameter exists in the original params object and has a defined value.\n // This handles cases where generateStaticParams doesn't provide all possible parameters,\n // or where some parameters are optional/undefined.\n if (\n !params.hasOwnProperty(routeKey) ||\n params[routeKey] === undefined\n ) {\n // If this missing parameter is a Root Parameter, mark the combination as invalid.\n // Root Parameters are required for Static Shells, so we can't generate partial combinations without them.\n if (rootParamKeys.includes(routeKey)) {\n hasAllRootParams = false\n }\n // Stop building this combination since we've hit a missing parameter.\n // This ensures we only generate valid prefix combinations with consecutive parameters.\n break\n }\n\n const value = params[routeKey]\n combination[routeKey] = value\n\n // Construct a unique key part for this parameter to enable deduplication.\n // We use type prefixes to prevent collisions between different value types\n // that might have the same string representation.\n //\n // Examples:\n // - Array ['foo', 'bar'] becomes \"A:foo,bar\"\n // - String \"foo,bar\" becomes \"S:foo,bar\"\n // - This prevents collisions between ['foo', 'bar'] and \"foo,bar\"\n let valuePart: string\n if (Array.isArray(value)) {\n valuePart = `A:${value.join(',')}`\n } else {\n valuePart = `S:${value}`\n }\n keyParts.push(`${routeKey}:${valuePart}`)\n }\n\n // Build the final unique key by joining all parameter parts.\n // This key is used for deduplication in the combinations Map.\n // Format: \"lang:S:en|region:S:US|slug:A:home,about\"\n const currentKey = keyParts.join('|')\n\n // Only add the combination if it meets our criteria:\n // 1. hasAllRootParams: Contains all required Root Parameters\n // 2. !combinations.has(currentKey): Is not a duplicate of an existing combination\n //\n // This ensures we only generate valid, unique parameter combinations for Static Shells.\n if (hasAllRootParams && !combinations.has(currentKey)) {\n combinations.set(currentKey, combination)\n }\n }\n }\n\n // Convert the Map's values back into an array and return the final result.\n // The Map ensures all combinations are unique, and we return only the\n // parameter objects themselves, discarding the internal deduplication keys.\n return Array.from(combinations.values())\n}\n\n/**\n * Calculates the fallback mode based on the given parameters.\n *\n * @param dynamicParams - Whether dynamic params are enabled.\n * @param fallbackRootParams - The root params that are part of the fallback.\n * @param baseFallbackMode - The base fallback mode to use.\n * @returns The calculated fallback mode.\n */\nexport function calculateFallbackMode(\n dynamicParams: boolean,\n fallbackRootParams: readonly string[],\n baseFallbackMode: FallbackMode | undefined\n): FallbackMode {\n return dynamicParams\n ? // If the fallback params includes any root params, then we need to\n // perform a blocking static render.\n fallbackRootParams.length > 0\n ? FallbackMode.BLOCKING_STATIC_RENDER\n : baseFallbackMode ?? FallbackMode.NOT_FOUND\n : FallbackMode.NOT_FOUND\n}\n\n/**\n * Validates the parameters to ensure they're accessible and have the correct\n * types.\n *\n * @param page - The page to validate.\n * @param regex - The route regex.\n * @param isRoutePPREnabled - Whether the route has partial prerendering enabled.\n * @param routeParamKeys - The keys of the parameters.\n * @param rootParamKeys - The keys of the root params.\n * @param routeParams - The list of parameters to validate.\n * @returns The list of validated parameters.\n */\nfunction validateParams(\n page: string,\n regex: RouteRegex,\n isRoutePPREnabled: boolean,\n routeParamKeys: readonly string[],\n rootParamKeys: readonly string[],\n routeParams: readonly Params[]\n): Params[] {\n const valid: Params[] = []\n\n // Validate that if there are any root params, that the user has provided at\n // least one value for them only if we're using partial prerendering.\n if (isRoutePPREnabled && rootParamKeys.length > 0) {\n if (\n routeParams.length === 0 ||\n rootParamKeys.some((key) =>\n routeParams.some((params) => !(key in params))\n )\n ) {\n if (rootParamKeys.length === 1) {\n throw new Error(\n `A required root parameter (${rootParamKeys[0]}) was not provided in generateStaticParams for ${page}, please provide at least one value.`\n )\n }\n\n throw new Error(\n `Required root params (${rootParamKeys.join(', ')}) were not provided in generateStaticParams for ${page}, please provide at least one value for each.`\n )\n }\n }\n\n for (const params of routeParams) {\n const item: Params = {}\n\n for (const key of routeParamKeys) {\n const { repeat, optional } = regex.groups[key]\n\n let paramValue = params[key]\n\n if (\n optional &&\n params.hasOwnProperty(key) &&\n (paramValue === null ||\n paramValue === undefined ||\n (paramValue as any) === false)\n ) {\n paramValue = []\n }\n\n // A parameter is missing, so the rest of the params are not accessible.\n // We only support this when the route has partial prerendering enabled.\n // This will make it so that the remaining params are marked as missing so\n // we can generate a fallback route for them.\n if (!paramValue && isRoutePPREnabled) {\n break\n }\n\n // Perform validation for the parameter based on whether it's a repeat\n // parameter or not.\n if (repeat) {\n if (!Array.isArray(paramValue)) {\n throw new Error(\n `A required parameter (${key}) was not provided as an array received ${typeof paramValue} in generateStaticParams for ${page}`\n )\n }\n } else {\n if (typeof paramValue !== 'string') {\n throw new Error(\n `A required parameter (${key}) was not provided as a string received ${typeof paramValue} in generateStaticParams for ${page}`\n )\n }\n }\n\n item[key] = paramValue\n }\n\n valid.push(item)\n }\n\n return valid\n}\n\ninterface TrieNode {\n /**\n * The children of the node. Each key is a unique string representation of a parameter value,\n * and the value is the next TrieNode in the path.\n */\n children: Map\n\n /**\n * The routes that are associated with this specific parameter combination (node).\n * These are the routes whose concrete parameters lead to this node in the Trie.\n */\n routes: PrerenderedRoute[]\n}\n\n/**\n * Assigns the throwOnEmptyStaticShell property to each of the prerendered routes.\n * This function uses a Trie data structure to efficiently determine whether each route\n * should throw an error when its static shell is empty.\n *\n * A route should not throw on empty static shell if it has child routes in the Trie. For example,\n * if we have two routes, `/blog/first-post` and `/blog/[slug]`, the route for\n * `/blog/[slug]` should not throw because `/blog/first-post` is a more specific concrete route.\n *\n * @param prerenderedRoutes - The prerendered routes.\n * @param routeParamKeys - The keys of the route parameters.\n */\nexport function assignErrorIfEmpty(\n prerenderedRoutes: readonly PrerenderedRoute[],\n routeParamKeys: readonly string[]\n): void {\n // If there are no routes to process, exit early.\n if (prerenderedRoutes.length === 0) {\n return\n }\n\n // Initialize the root of the Trie. This node represents the starting point\n // before any parameters have been considered.\n const root: TrieNode = { children: new Map(), routes: [] }\n\n // Phase 1: Build the Trie.\n // Iterate over each prerendered route and insert it into the Trie.\n // Each route's concrete parameter values form a path in the Trie.\n for (const route of prerenderedRoutes) {\n let currentNode = root // Start building the path from the root for each route.\n\n // Iterate through the sorted parameter keys. The order of keys is crucial\n // for ensuring that routes with the same concrete parameters follow the\n // same path in the Trie, regardless of the original order of properties\n // in the `params` object.\n for (const key of routeParamKeys) {\n // Check if the current route actually has a concrete value for this parameter.\n // If a dynamic segment is not filled (i.e., it's a fallback), it won't have\n // this property, and we stop building the path for this route at this point.\n if (route.params.hasOwnProperty(key)) {\n const value = route.params[key]\n\n // Generate a unique key for the parameter's value. This is critical\n // to prevent collisions between different data types that might have\n // the same string representation (e.g., `['a', 'b']` vs `'a,b'`).\n // A type prefix (`A:` for Array, `S:` for String, `U:` for undefined)\n // is added to the value to prevent collisions. This ensures that\n // different types with the same string representation are treated as\n // distinct.\n let valueKey: string\n if (Array.isArray(value)) {\n valueKey = `A:${value.join(',')}`\n } else if (value === undefined) {\n valueKey = `U:undefined`\n } else {\n valueKey = `S:${value}`\n }\n\n // Look for a child node corresponding to this `valueKey` from the `currentNode`.\n let childNode = currentNode.children.get(valueKey)\n if (!childNode) {\n // If the child node doesn't exist, create a new one and add it to\n // the current node's children.\n childNode = { children: new Map(), routes: [] }\n currentNode.children.set(valueKey, childNode)\n }\n // Move deeper into the Trie to the `childNode` for the next parameter.\n currentNode = childNode\n }\n }\n // After processing all concrete parameters for the route, add the full\n // `PrerenderedRoute` object to the `routes` array of the `currentNode`.\n // This node represents the unique concrete parameter combination for this route.\n currentNode.routes.push(route)\n }\n\n // Phase 2: Traverse the Trie to assign the `throwOnEmptyStaticShell` property.\n // This is done using an iterative Depth-First Search (DFS) approach with an\n // explicit stack to avoid JavaScript's recursion depth limits (stack overflow)\n // for very deep routing structures.\n const stack: TrieNode[] = [root] // Initialize the stack with the root node.\n\n while (stack.length > 0) {\n const node = stack.pop()! // Pop the next node to process from the stack.\n\n // `hasChildren` indicates if this node has any more specific concrete\n // parameter combinations branching off from it. If true, it means this\n // node represents a prefix for other, more specific routes.\n const hasChildren = node.children.size > 0\n\n // If the current node has routes associated with it (meaning, routes whose\n // concrete parameters lead to this node's path in the Trie).\n if (node.routes.length > 0) {\n // Determine the minimum number of fallback parameters among all routes\n // that are associated with this current Trie node. This is used to\n // identify if a route should not throw on empty static shell relative to another route *at the same level*\n // of concrete parameters, but with fewer fallback parameters.\n let minFallbacks = Infinity\n for (const r of node.routes) {\n // `fallbackRouteParams?.length ?? 0` handles cases where `fallbackRouteParams`\n // might be `undefined` or `null`, treating them as 0 length.\n minFallbacks = Math.min(\n minFallbacks,\n r.fallbackRouteParams?.length ?? 0\n )\n }\n\n // Now, for each `PrerenderedRoute` associated with this node:\n for (const route of node.routes) {\n // A route is ok not to throw on an empty static shell (and thus\n // `throwOnEmptyStaticShell` should be `false`) if either of the\n // following conditions is met:\n // 1. `hasChildren` is true: This node has further concrete parameter children.\n // This means the current route is a parent to more specific routes (e.g.,\n // `/blog/[slug]` should not throw when concrete routes like `/blog/first-post` exist).\n // OR\n // 2. `route.fallbackRouteParams.length > minFallbacks`: This route has\n // more fallback parameters than another route at the same Trie node.\n // This implies the current route is a more general version that should not throw\n // compared to a more specific route that has fewer fallback parameters\n // (e.g., `/1234/[...slug]` should not throw relative to `/[id]/[...slug]`).\n if (\n hasChildren ||\n (route.fallbackRouteParams &&\n route.fallbackRouteParams.length > minFallbacks)\n ) {\n route.throwOnEmptyStaticShell = false // Should not throw on empty static shell.\n } else {\n route.throwOnEmptyStaticShell = true // Should throw on empty static shell.\n }\n }\n }\n\n // Add all children of the current node to the stack. This ensures that\n // the traversal continues to explore deeper paths in the Trie.\n for (const child of node.children.values()) {\n stack.push(child)\n }\n }\n}\n\n/**\n * Processes app directory segments to build route parameters from generateStaticParams functions.\n * This function walks through the segments array and calls generateStaticParams for each segment that has it,\n * combining parent parameters with child parameters to build the complete parameter combinations.\n * Uses iterative processing instead of recursion for better performance.\n *\n * @param segments - Array of app directory segments to process\n * @param store - Work store for tracking fetch cache configuration\n * @returns Promise that resolves to an array of all parameter combinations\n */\nexport async function generateRouteStaticParams(\n segments: Pick[],\n store: Pick\n): Promise {\n // Early return if no segments to process\n if (segments.length === 0) return []\n\n // Use iterative processing with a work queue to avoid recursion overhead\n interface WorkItem {\n segmentIndex: number\n params: Params[]\n }\n\n const queue: WorkItem[] = [{ segmentIndex: 0, params: [] }]\n let currentParams: Params[] = []\n\n while (queue.length > 0) {\n const { segmentIndex, params } = queue.shift()!\n\n // If we've processed all segments, this is our final result\n if (segmentIndex >= segments.length) {\n currentParams = params\n break\n }\n\n const current = segments[segmentIndex]\n\n // Skip segments without generateStaticParams and continue to next\n if (typeof current.generateStaticParams !== 'function') {\n queue.push({ segmentIndex: segmentIndex + 1, params })\n continue\n }\n\n // Configure fetchCache if specified\n if (current.config?.fetchCache !== undefined) {\n store.fetchCache = current.config.fetchCache\n }\n\n const nextParams: Params[] = []\n\n // If there are parent params, we need to process them.\n if (params.length > 0) {\n // Process each parent parameter combination\n for (const parentParams of params) {\n const result = await current.generateStaticParams({\n params: parentParams,\n })\n\n if (result.length > 0) {\n // Merge parent params with each result item\n for (const item of result) {\n nextParams.push({ ...parentParams, ...item })\n }\n } else {\n // No results, just pass through parent params\n nextParams.push(parentParams)\n }\n }\n } else {\n // No parent params, call generateStaticParams with empty object\n const result = await current.generateStaticParams({ params: {} })\n nextParams.push(...result)\n }\n\n // Add next segment to work queue\n queue.push({ segmentIndex: segmentIndex + 1, params: nextParams })\n }\n\n return currentParams\n}\n\n/**\n * Builds the static paths for an app using `generateStaticParams`.\n *\n * @param params - The parameters for the build.\n * @returns The static paths.\n */\nexport async function buildAppStaticPaths({\n dir,\n page,\n distDir,\n cacheComponents,\n authInterrupts,\n segments,\n isrFlushToDisk,\n cacheHandler,\n cacheLifeProfiles,\n requestHeaders,\n cacheHandlers,\n maxMemoryCacheSize,\n fetchCacheKeyPrefix,\n nextConfigOutput,\n ComponentMod,\n isRoutePPREnabled = false,\n buildId,\n rootParamKeys,\n}: {\n dir: string\n page: string\n cacheComponents: boolean\n authInterrupts: boolean\n segments: AppSegment[]\n distDir: string\n isrFlushToDisk?: boolean\n fetchCacheKeyPrefix?: string\n cacheHandler?: string\n cacheHandlers?: NextConfigComplete['experimental']['cacheHandlers']\n cacheLifeProfiles?: {\n [profile: string]: import('../../server/use-cache/cache-life').CacheLife\n }\n maxMemoryCacheSize?: number\n requestHeaders: IncrementalCache['requestHeaders']\n nextConfigOutput: 'standalone' | 'export' | undefined\n ComponentMod: AppPageModule\n isRoutePPREnabled: boolean\n buildId: string\n rootParamKeys: readonly string[]\n}): Promise {\n if (\n segments.some((generate) => generate.config?.dynamicParams === true) &&\n nextConfigOutput === 'export'\n ) {\n throw new Error(\n '\"dynamicParams: true\" cannot be used with \"output: export\". See more info here: https://nextjs.org/docs/app/building-your-application/deploying/static-exports'\n )\n }\n\n ComponentMod.patchFetch()\n\n const incrementalCache = await createIncrementalCache({\n dir,\n distDir,\n cacheHandler,\n cacheHandlers,\n requestHeaders,\n fetchCacheKeyPrefix,\n flushToDisk: isrFlushToDisk,\n cacheMaxMemorySize: maxMemoryCacheSize,\n })\n\n const regex = getRouteRegex(page)\n const routeParamKeys = Object.keys(getRouteMatcher(regex)(page) || {})\n\n const afterRunner = new AfterRunner()\n\n const store = createWorkStore({\n page,\n renderOpts: {\n incrementalCache,\n cacheLifeProfiles,\n supportsDynamicResponse: true,\n isRevalidate: false,\n experimental: {\n cacheComponents,\n authInterrupts,\n },\n waitUntil: afterRunner.context.waitUntil,\n onClose: afterRunner.context.onClose,\n onAfterTaskError: afterRunner.context.onTaskError,\n },\n buildId,\n previouslyRevalidatedTags: [],\n })\n\n const routeParams = await ComponentMod.workAsyncStorage.run(store, () =>\n generateRouteStaticParams(segments, store)\n )\n\n await afterRunner.executeAfter()\n\n let lastDynamicSegmentHadGenerateStaticParams = false\n for (const segment of segments) {\n // Check to see if there are any missing params for segments that have\n // dynamicParams set to false.\n if (\n segment.param &&\n segment.isDynamicSegment &&\n segment.config?.dynamicParams === false\n ) {\n for (const params of routeParams) {\n if (segment.param in params) continue\n\n const relative = segment.filePath\n ? path.relative(dir, segment.filePath)\n : undefined\n\n throw new Error(\n `Segment \"${relative}\" exports \"dynamicParams: false\" but the param \"${segment.param}\" is missing from the generated route params.`\n )\n }\n }\n\n if (\n segment.isDynamicSegment &&\n typeof segment.generateStaticParams !== 'function'\n ) {\n lastDynamicSegmentHadGenerateStaticParams = false\n } else if (typeof segment.generateStaticParams === 'function') {\n lastDynamicSegmentHadGenerateStaticParams = true\n }\n }\n\n // Determine if all the segments have had their parameters provided.\n const hadAllParamsGenerated =\n routeParamKeys.length === 0 ||\n (routeParams.length > 0 &&\n routeParams.every((params) => {\n for (const key of routeParamKeys) {\n if (key in params) continue\n return false\n }\n return true\n }))\n\n // TODO: dynamic params should be allowed to be granular per segment but\n // we need additional information stored/leveraged in the prerender\n // manifest to allow this behavior.\n const dynamicParams = segments.every(\n (segment) => segment.config?.dynamicParams !== false\n )\n\n const supportsRoutePreGeneration =\n hadAllParamsGenerated || process.env.NODE_ENV === 'production'\n\n const fallbackMode = dynamicParams\n ? supportsRoutePreGeneration\n ? isRoutePPREnabled\n ? FallbackMode.PRERENDER\n : FallbackMode.BLOCKING_STATIC_RENDER\n : undefined\n : FallbackMode.NOT_FOUND\n\n const prerenderedRoutesByPathname = new Map()\n\n // Precompile the regex patterns for the route params.\n const paramPatterns = new Map()\n for (const key of routeParamKeys) {\n const { repeat, optional } = regex.groups[key]\n let pattern = `[${repeat ? '...' : ''}${key}]`\n if (optional) {\n pattern = `[${pattern}]`\n }\n paramPatterns.set(key, pattern)\n }\n\n // Convert rootParamKeys to Set for O(1) lookup.\n const rootParamSet = new Set(rootParamKeys)\n\n if (hadAllParamsGenerated || isRoutePPREnabled) {\n let paramsToProcess = routeParams\n\n if (isRoutePPREnabled) {\n // Discover all unique combinations of the routeParams so we can generate\n // routes that won't throw on empty static shell for each of them if\n // they're available.\n paramsToProcess = generateAllParamCombinations(\n routeParamKeys,\n routeParams,\n rootParamKeys\n )\n\n // Add the base route, this is the route with all the placeholders as it's\n // derived from the `page` string.\n prerenderedRoutesByPathname.set(page, {\n params: {},\n pathname: page,\n encodedPathname: page,\n fallbackRouteParams: routeParamKeys,\n fallbackMode: calculateFallbackMode(\n dynamicParams,\n rootParamKeys,\n fallbackMode\n ),\n fallbackRootParams: rootParamKeys,\n throwOnEmptyStaticShell: true,\n })\n }\n\n filterUniqueParams(\n routeParamKeys,\n validateParams(\n page,\n regex,\n isRoutePPREnabled,\n routeParamKeys,\n rootParamKeys,\n paramsToProcess\n )\n ).forEach((params) => {\n let pathname = page\n let encodedPathname = page\n\n const fallbackRouteParams: string[] = []\n\n for (const key of routeParamKeys) {\n const paramValue = params[key]\n\n if (!paramValue) {\n if (isRoutePPREnabled) {\n // Mark remaining params as fallback params.\n fallbackRouteParams.push(key)\n for (\n let i = routeParamKeys.indexOf(key) + 1;\n i < routeParamKeys.length;\n i++\n ) {\n fallbackRouteParams.push(routeParamKeys[i])\n }\n break\n } else {\n // This route is not complete, and we aren't performing a partial\n // prerender, so we should return, skipping this route.\n return\n }\n }\n\n // Use pre-compiled pattern for replacement\n const pattern = paramPatterns.get(key)!\n pathname = pathname.replace(\n pattern,\n encodeParam(paramValue, (value) => escapePathDelimiters(value, true))\n )\n encodedPathname = encodedPathname.replace(\n pattern,\n encodeParam(paramValue, encodeURIComponent)\n )\n }\n\n const fallbackRootParams: string[] = []\n for (const param of fallbackRouteParams) {\n if (rootParamSet.has(param)) {\n fallbackRootParams.push(param)\n }\n }\n\n pathname = normalizePathname(pathname)\n\n prerenderedRoutesByPathname.set(pathname, {\n params,\n pathname,\n encodedPathname: normalizePathname(encodedPathname),\n fallbackRouteParams,\n fallbackMode: calculateFallbackMode(\n dynamicParams,\n fallbackRootParams,\n fallbackMode\n ),\n fallbackRootParams,\n throwOnEmptyStaticShell: true,\n })\n })\n }\n\n const prerenderedRoutes =\n prerenderedRoutesByPathname.size > 0 ||\n lastDynamicSegmentHadGenerateStaticParams\n ? [...prerenderedRoutesByPathname.values()]\n : undefined\n\n // Now we have to set the throwOnEmptyStaticShell for each of the routes.\n if (prerenderedRoutes && cacheComponents) {\n assignErrorIfEmpty(prerenderedRoutes, routeParamKeys)\n }\n\n return { fallbackMode, prerenderedRoutes }\n}\n"],"names":["assignErrorIfEmpty","buildAppStaticPaths","calculateFallbackMode","filterUniqueParams","generateAllParamCombinations","generateRouteStaticParams","routeParamKeys","routeParams","unique","Map","params","key","paramKey","value","valuePart","Array","isArray","join","undefined","has","set","from","values","rootParamKeys","combinations","minIndexForCompleteRootParams","length","rootParamKey","index","indexOf","Math","max","i","combination","keyParts","hasAllRootParams","j","routeKey","hasOwnProperty","includes","push","currentKey","dynamicParams","fallbackRootParams","baseFallbackMode","FallbackMode","BLOCKING_STATIC_RENDER","NOT_FOUND","validateParams","page","regex","isRoutePPREnabled","valid","some","Error","item","repeat","optional","groups","paramValue","prerenderedRoutes","root","children","routes","route","currentNode","valueKey","childNode","get","stack","node","pop","hasChildren","size","minFallbacks","Infinity","r","min","fallbackRouteParams","throwOnEmptyStaticShell","child","segments","store","queue","segmentIndex","currentParams","current","shift","generateStaticParams","config","fetchCache","nextParams","parentParams","result","dir","distDir","cacheComponents","authInterrupts","isrFlushToDisk","cacheHandler","cacheLifeProfiles","requestHeaders","cacheHandlers","maxMemoryCacheSize","fetchCacheKeyPrefix","nextConfigOutput","ComponentMod","buildId","generate","patchFetch","incrementalCache","createIncrementalCache","flushToDisk","cacheMaxMemorySize","getRouteRegex","Object","keys","getRouteMatcher","afterRunner","AfterRunner","createWorkStore","renderOpts","supportsDynamicResponse","isRevalidate","experimental","waitUntil","context","onClose","onAfterTaskError","onTaskError","previouslyRevalidatedTags","workAsyncStorage","run","executeAfter","lastDynamicSegmentHadGenerateStaticParams","segment","param","isDynamicSegment","relative","filePath","path","hadAllParamsGenerated","every","supportsRoutePreGeneration","process","env","NODE_ENV","fallbackMode","PRERENDER","prerenderedRoutesByPathname","paramPatterns","pattern","rootParamSet","Set","paramsToProcess","pathname","encodedPathname","forEach","replace","encodeParam","escapePathDelimiters","encodeURIComponent","normalizePathname"],"mappings":"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","ignoreList":[0]}