{"version":3,"sources":["../src/routes.ts"],"sourcesContent":["import type { ComponentType } from \"react\";\nimport {\n  createFarmCacheKey,\n  createRouteDataCacheTag,\n  getFarmDataCache,\n  type FarmCacheOptions,\n  type RouteDataCacheKey,\n} from \"./cache\";\nimport { getFarmRouteContext } from \"./route-context\";\nimport { normalizeFarmRouteRuntimeConfig, type FarmRouteRuntimeConfig } from \"./route-runtime\";\nimport type { ServerFn } from \"./server-fn\";\nimport type { FarmServerRendererRuntime } from \"./renderer\";\nimport { parseProgrammaticRoutePath as parseSharedProgrammaticRoutePath } from \"./routes-shared\";\nimport { extractProgrammaticPageCallPathLiterals } from \"./route-call-scanner\";\nimport type {\n  FarmAppContext,\n  LayoutProps,\n  Metadata,\n  PageProps,\n  ParsedRoute,\n  PluginContextProps,\n  RouteModule,\n} from \"./types\";\n\nexport type ProgrammaticRouteRenderMode = \"static\" | \"dynamic\";\nexport type ProgrammaticRouteMethod =\n  | \"GET\"\n  | \"HEAD\"\n  | \"QUERY\"\n  | \"POST\"\n  | \"PUT\"\n  | \"DELETE\"\n  | \"PATCH\"\n  | \"OPTIONS\";\n\nexport type ProgrammaticRoutePrimitive = string | number | boolean;\nexport type ProgrammaticStaticPathParams = Record<\n  string,\n  ProgrammaticRoutePrimitive | readonly ProgrammaticRoutePrimitive[]\n>;\nexport type ProgrammaticStaticPath =\n  | string\n  | readonly ProgrammaticRoutePrimitive[]\n  | ProgrammaticStaticPathParams;\nexport type ProgrammaticStaticPaths = () =>\n  | readonly ProgrammaticStaticPath[]\n  | Promise<readonly ProgrammaticStaticPath[]>;\n\nexport interface ProgrammaticRouteSchema<TOutput = unknown> {\n  parse(value: unknown): TOutput;\n}\n\nexport interface ProgrammaticRouteSearchOptions<TOutput = ProgrammaticRouteSearchFallback> {\n  schema?: ProgrammaticRouteSchema<TOutput>;\n  stripDefaults?: boolean | readonly string[];\n  preserve?: readonly string[];\n  temporary?: readonly string[];\n}\n\nexport type ProgrammaticRouteSearchConfig<TOutput = ProgrammaticRouteSearchFallback> =\n  | ProgrammaticRouteSchema<TOutput>\n  | ProgrammaticRouteSearchOptions<TOutput>;\n\nexport type InferProgrammaticRouteSchema<TSchema, TFallback> =\n  TSchema extends ProgrammaticRouteSchema<infer TOutput> ? TOutput : TFallback;\n\nexport type InferProgrammaticRouteSearch<TSearch, TFallback> =\n  TSearch extends ProgrammaticRouteSearchOptions<infer TOutput>\n    ? TOutput\n    : TSearch extends ProgrammaticRouteSchema<infer TOutput>\n      ? TOutput\n      : TFallback;\n\nexport type ProgrammaticRouteParamsFallback = Record<string, string>;\nexport type ProgrammaticRouteSearchFallback = Record<string, string | string[] | undefined>;\nexport type ProgrammaticRouteMaybePromise<T> = T | Promise<T>;\nexport type ProgrammaticRouteAction = ServerFn<any, any, any>;\nexport type ProgrammaticRouteActions = Readonly<Record<string, ProgrammaticRouteAction>>;\nexport type ProgrammaticRouteDefaultAction<\n  TActions extends ProgrammaticRouteActions,\n  TDefaultAction extends keyof TActions | undefined,\n> = [TDefaultAction] extends [undefined]\n  ? TActions[keyof TActions]\n  : TActions[Extract<TDefaultAction, keyof TActions>];\nexport type ProgrammaticRouteActionContract<\n  TActions extends ProgrammaticRouteActions,\n  TDefaultAction extends keyof TActions | undefined,\n> = keyof TActions extends never\n  ? {\n      actions?: undefined;\n      defaultAction?: undefined;\n      action?: undefined;\n    }\n  : {\n      actions: Readonly<TActions>;\n      defaultAction: [TDefaultAction] extends [undefined]\n        ? keyof TActions\n        : Extract<TDefaultAction, keyof TActions>;\n      action: ProgrammaticRouteDefaultAction<TActions, TDefaultAction>;\n    };\nexport type ProgrammaticRouteWithActions<\n  TRoute extends ProgrammaticPageRoute<any, any, any, any>,\n  TActions extends ProgrammaticRouteActions,\n  TDefaultAction extends keyof TActions | undefined,\n> = Omit<TRoute, \"actions\" | \"defaultAction\" | \"action\"> &\n  ProgrammaticRouteActionContract<TActions, TDefaultAction>;\nexport type ProgrammaticRouteDataStaleTime =\n  | number\n  | false\n  | `${number}ms`\n  | `${number}s`\n  | `${number}m`\n  | `${number}h`;\nexport type ProgrammaticRouteContext = keyof FarmAppContext extends never\n  ? unknown\n  : FarmAppContext;\n\nexport type ProgrammaticRouteComponentProps<\n  TParams = ProgrammaticRouteParamsFallback,\n  TSearch = ProgrammaticRouteSearchFallback,\n  TData = undefined,\n> = Omit<PageProps, \"params\" | \"searchParams\"> & {\n  params: TParams;\n  search: TSearch;\n  searchParams: Promise<TSearch>;\n} & ([TData] extends [undefined] ? { data?: undefined } : { data: TData });\n\nexport type ProgrammaticRouteDataContext<\n  TParams = ProgrammaticRouteParamsFallback,\n  TSearch = ProgrammaticRouteSearchFallback,\n  TContext = ProgrammaticRouteContext,\n> = Omit<ProgrammaticRouteComponentProps<TParams, TSearch>, \"context\" | \"data\"> & {\n  context: TContext;\n  pluginContext?: PluginContextProps;\n};\n\nexport type ProgrammaticRouteDataCacheContext<\n  TParams = ProgrammaticRouteParamsFallback,\n  TSearch = ProgrammaticRouteSearchFallback,\n  TBefore = unknown,\n  TContext = ProgrammaticRouteContext,\n> = ProgrammaticRouteDataContext<TParams, TSearch, TContext> & {\n  before: TBefore;\n};\n\nexport type ProgrammaticRouteGuardContext<\n  TParams = ProgrammaticRouteParamsFallback,\n  TSearch = ProgrammaticRouteSearchFallback,\n  TContext = ProgrammaticRouteContext,\n> = ProgrammaticRouteDataContext<TParams, TSearch, TContext>;\n\nexport type ProgrammaticRouteGuard<\n  TParams = ProgrammaticRouteParamsFallback,\n  TSearch = ProgrammaticRouteSearchFallback,\n  TContext = ProgrammaticRouteContext,\n> = (\n  context: ProgrammaticRouteGuardContext<TParams, TSearch, TContext>,\n) => ProgrammaticRouteMaybePromise<void>;\n\nexport type ProgrammaticRouteErrorComponentProps<\n  TParams = ProgrammaticRouteParamsFallback,\n  TSearch = ProgrammaticRouteSearchFallback,\n> = Partial<ProgrammaticRouteComponentProps<TParams, TSearch>> & {\n  error: unknown;\n};\n\nexport type ProgrammaticRoutePendingComponentProps<\n  TParams = ProgrammaticRouteParamsFallback,\n  TSearch = ProgrammaticRouteSearchFallback,\n> = Partial<ProgrammaticRouteComponentProps<TParams, TSearch>>;\n\nexport type ProgrammaticRouteDataCacheKeys<\n  TParams = ProgrammaticRouteParamsFallback,\n  TSearch = ProgrammaticRouteSearchFallback,\n  TBefore = unknown,\n  TContext = ProgrammaticRouteContext,\n> =\n  | readonly string[]\n  | ((\n      context: ProgrammaticRouteDataCacheContext<TParams, TSearch, TBefore, TContext>,\n    ) => ProgrammaticRouteMaybePromise<readonly string[]>);\n\nexport interface ProgrammaticRouteDataHooks<\n  TParams = ProgrammaticRouteParamsFallback,\n  TSearch = ProgrammaticRouteSearchFallback,\n  TBefore = unknown,\n  TData = unknown,\n  TContext = ProgrammaticRouteContext,\n> {\n  key?: (\n    context: ProgrammaticRouteDataCacheContext<TParams, TSearch, NoInfer<TBefore>, TContext>,\n  ) => ProgrammaticRouteMaybePromise<RouteDataCacheKey | null | undefined>;\n  staleTime?: ProgrammaticRouteDataStaleTime;\n  tags?: ProgrammaticRouteDataCacheKeys<TParams, TSearch, NoInfer<TBefore>, TContext>;\n  paths?: ProgrammaticRouteDataCacheKeys<TParams, TSearch, NoInfer<TBefore>, TContext>;\n  before?: (\n    context: ProgrammaticRouteDataContext<TParams, TSearch, TContext>,\n  ) => ProgrammaticRouteMaybePromise<TBefore>;\n  main: (\n    context: ProgrammaticRouteDataContext<TParams, TSearch, TContext> & {\n      before: NoInfer<TBefore>;\n    },\n  ) => ProgrammaticRouteMaybePromise<TData>;\n  after?: (\n    context: ProgrammaticRouteDataContext<TParams, TSearch, TContext> & {\n      before: NoInfer<TBefore>;\n      data: NoInfer<TData>;\n    },\n  ) => ProgrammaticRouteMaybePromise<void>;\n}\n\nexport type InferProgrammaticRouteData<TDataHooks> = TDataHooks extends {\n  main: (...args: any[]) => infer TResult;\n}\n  ? Awaited<TResult>\n  : undefined;\n\nexport interface ProgrammaticPageRoute<\n  TParams = ProgrammaticRouteParamsFallback,\n  TSearch = ProgrammaticRouteSearchFallback,\n  TDataHooks extends ProgrammaticRouteDataHooks<TParams, TSearch, any, any, any> | undefined =\n    | ProgrammaticRouteDataHooks<TParams, TSearch, any, any, any>\n    | undefined,\n  TContext = ProgrammaticRouteContext,\n> extends FarmRouteRuntimeConfig {\n  kind: \"page\";\n  path: string;\n  component: ComponentType<any>;\n  params?: ProgrammaticRouteSchema<TParams>;\n  search?: ProgrammaticRouteSearchConfig<TSearch>;\n  guard?: ProgrammaticRouteGuard<TParams, TSearch, TContext>;\n  data?: TDataHooks;\n  /** Named server functions owned by this route. */\n  actions?: ProgrammaticRouteActions;\n  /** Named action selected by `useAction(route)`. The first action is used when omitted. */\n  defaultAction?: string;\n  /** Resolved default server function for client and server calls. */\n  action?: ProgrammaticRouteAction;\n  pending?: ComponentType<ProgrammaticRoutePendingComponentProps<TParams, TSearch>>;\n  error?: ComponentType<ProgrammaticRouteErrorComponentProps<TParams, TSearch>>;\n  notFound?: ComponentType<ProgrammaticRouteErrorComponentProps<TParams, TSearch>>;\n  render?: ProgrammaticRouteRenderMode;\n  staticPaths?: ProgrammaticStaticPaths;\n  revalidate?: number | false;\n  ppr?: boolean;\n  metadata?: Metadata & Record<string, any>;\n  generateMetadata?: RouteModule[\"generateMetadata\"];\n}\n\nexport interface ProgrammaticLayoutRoute extends FarmRouteRuntimeConfig {\n  kind: \"layout\";\n  path: string;\n  component: ComponentType<LayoutProps>;\n  metadata?: Metadata & Record<string, any>;\n  generateMetadata?: (props: { params: Record<string, string> }) => Promise<Metadata> | Metadata;\n}\n\nexport type ProgrammaticApiRouteOptions = Partial<Record<ProgrammaticRouteMethod, any>> & {\n  render?: ProgrammaticRouteRenderMode;\n} & FarmRouteRuntimeConfig;\n\nexport interface ProgrammaticApiRoute extends FarmRouteRuntimeConfig {\n  kind: \"api\";\n  path: string;\n  methods: Partial<Record<ProgrammaticRouteMethod, any>>;\n  render?: ProgrammaticRouteRenderMode;\n}\n\nexport interface ProgrammaticRedirectRoute {\n  kind: \"redirect\";\n  source: string;\n  destination: string;\n  permanent?: boolean;\n  statusCode?: number;\n}\n\nexport type ProgrammaticRouteDefinition =\n  | ProgrammaticPageRoute<any, any>\n  | ProgrammaticLayoutRoute\n  | ProgrammaticApiRoute\n  | ProgrammaticRedirectRoute;\n\nexport interface ProgrammaticRouteManifest {\n  readonly __farmRoutes: true;\n  routes: ProgrammaticRouteDefinition[];\n}\n\nexport interface ProgrammaticRouteBuilder {\n  page(\n    path: string,\n    options: Omit<ProgrammaticPageRoute<any, any>, \"kind\" | \"path\">,\n  ): ProgrammaticPageRoute;\n  layout(\n    path: string,\n    options: Omit<ProgrammaticLayoutRoute, \"kind\" | \"path\">,\n  ): ProgrammaticLayoutRoute;\n  api(path: string, options: ProgrammaticApiRouteOptions): ProgrammaticApiRoute;\n  redirect(\n    source: string,\n    destination: string,\n    options?: Omit<ProgrammaticRedirectRoute, \"kind\" | \"source\" | \"destination\">,\n  ): ProgrammaticRedirectRoute;\n}\n\nexport type ProgrammaticRouteFactory = (\n  builder: ProgrammaticRouteBuilder,\n) => readonly ProgrammaticRouteDefinition[];\n\ntype CreateRouteParams<TParamsSchema> = InferProgrammaticRouteSchema<\n  TParamsSchema,\n  ProgrammaticRouteParamsFallback\n>;\n\ntype CreateRouteSearch<TSearchConfig> = InferProgrammaticRouteSearch<\n  TSearchConfig,\n  ProgrammaticRouteSearchFallback\n>;\n\ntype CreateRouteSharedOptions<\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined,\n> = Omit<\n  ProgrammaticPageRoute<CreateRouteParams<TParamsSchema>, CreateRouteSearch<TSearchConfig>>,\n  \"kind\" | \"path\" | \"component\" | \"params\" | \"search\" | \"data\" | \"guard\" | \"action\"\n> & {\n  params?: TParamsSchema;\n  search?: TSearchConfig;\n  guard?: ProgrammaticRouteGuard<\n    CreateRouteParams<TParamsSchema>,\n    CreateRouteSearch<TSearchConfig>\n  >;\n};\n\ntype CreateRouteDataHooksWithBefore<\n  TParams,\n  TSearch,\n  TBeforeResult,\n  TMainResult,\n  TContext = ProgrammaticRouteContext,\n> = Omit<\n  ProgrammaticRouteDataHooks<\n    TParams,\n    TSearch,\n    NoInfer<Awaited<TBeforeResult>>,\n    NoInfer<Awaited<TMainResult>>,\n    TContext\n  >,\n  \"before\" | \"main\"\n> & {\n  before: (context: ProgrammaticRouteDataContext<TParams, TSearch, TContext>) => TBeforeResult;\n  main: (\n    context: ProgrammaticRouteDataContext<TParams, TSearch, TContext> & {\n      before: NoInfer<Awaited<TBeforeResult>>;\n    },\n  ) => TMainResult;\n};\n\ntype CreateRouteDataHooksWithoutBefore<\n  TParams,\n  TSearch,\n  TMainResult,\n  TContext = ProgrammaticRouteContext,\n> = Omit<\n  ProgrammaticRouteDataHooks<TParams, TSearch, undefined, NoInfer<Awaited<TMainResult>>, TContext>,\n  \"before\" | \"main\"\n> & {\n  before?: undefined;\n  main: (\n    context: ProgrammaticRouteDataContext<TParams, TSearch, TContext> & {\n      before: undefined;\n    },\n  ) => TMainResult;\n};\n\ntype CreateRouteOptionsWithBefore<\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined,\n  TBefore,\n  TData,\n> = CreateRouteSharedOptions<TParamsSchema, TSearchConfig> & {\n  data: CreateRouteDataHooksWithBefore<\n    CreateRouteParams<TParamsSchema>,\n    CreateRouteSearch<TSearchConfig>,\n    TBefore,\n    TData\n  >;\n  component: ComponentType<\n    ProgrammaticRouteComponentProps<\n      CreateRouteParams<TParamsSchema>,\n      CreateRouteSearch<TSearchConfig>,\n      NoInfer<Awaited<TData>>\n    >\n  >;\n};\n\ntype CreateRouteOptionsWithoutBefore<\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined,\n  TData,\n> = CreateRouteSharedOptions<TParamsSchema, TSearchConfig> & {\n  data: CreateRouteDataHooksWithoutBefore<\n    CreateRouteParams<TParamsSchema>,\n    CreateRouteSearch<TSearchConfig>,\n    TData\n  >;\n  component: ComponentType<\n    ProgrammaticRouteComponentProps<\n      CreateRouteParams<TParamsSchema>,\n      CreateRouteSearch<TSearchConfig>,\n      NoInfer<Awaited<TData>>\n    >\n  >;\n};\n\ntype CreateRouteOptionsWithoutData<\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined,\n> = CreateRouteSharedOptions<TParamsSchema, TSearchConfig> & {\n  data?: undefined;\n  component: ComponentType<\n    ProgrammaticRouteComponentProps<\n      CreateRouteParams<TParamsSchema>,\n      CreateRouteSearch<TSearchConfig>,\n      undefined\n    >\n  >;\n};\n\ntype CreateRouteComponentOption<TComponent extends ComponentType<any>, TProps> = {\n  component: TComponent;\n} & (TComponent extends ComponentType<TProps> ? unknown : { component: ComponentType<TProps> });\n\nexport type CreateRouteOptions<\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined = undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined = undefined,\n  TBefore = unknown,\n  TData = unknown,\n> =\n  | CreateRouteOptionsWithBefore<TParamsSchema, TSearchConfig, TBefore, TData>\n  | CreateRouteOptionsWithoutBefore<TParamsSchema, TSearchConfig, TData>\n  | CreateRouteOptionsWithoutData<TParamsSchema, TSearchConfig>;\n\ntype CreateRouteActionOptions<\n  TActions extends ProgrammaticRouteActions,\n  TDefaultAction extends keyof TActions | undefined,\n> = keyof TActions extends never\n  ? { actions?: undefined; defaultAction?: undefined }\n  : { actions: TActions; defaultAction?: TDefaultAction };\n\nconst FARM_ROUTES_BRAND = Symbol.for(\"farm.routes\");\nexport const PROGRAMMATIC_ROUTE_FILE_NAMES = [\n  \"farm.route.ts\",\n  \"farm.route.tsx\",\n  \"farm.route.js\",\n  \"farm.route.jsx\",\n  \"farm.routes.ts\",\n  \"farm.routes.tsx\",\n  \"farm.routes.js\",\n  \"farm.routes.jsx\",\n  \"routes.ts\",\n  \"routes.tsx\",\n  \"routes.js\",\n  \"routes.jsx\",\n];\n\nexport function defineRoutes(\n  input: readonly ProgrammaticRouteDefinition[] | ProgrammaticRouteFactory,\n): ProgrammaticRouteManifest {\n  const routes = typeof input === \"function\" ? input(routesBuilder) : input;\n  const manifest = {\n    __farmRoutes: true as const,\n    routes: routes.map(normalizeProgrammaticRoute),\n  };\n\n  Object.defineProperty(manifest, FARM_ROUTES_BRAND, {\n    value: true,\n    enumerable: false,\n  });\n\n  return manifest;\n}\n\nexport const routesBuilder: ProgrammaticRouteBuilder = {\n  page(path, options) {\n    return normalizeProgrammaticRoute({\n      kind: \"page\",\n      path,\n      ...options,\n    }) as ProgrammaticPageRoute;\n  },\n  layout(path, options) {\n    return normalizeProgrammaticRoute({\n      kind: \"layout\",\n      path,\n      ...options,\n    }) as ProgrammaticLayoutRoute;\n  },\n  api(path, options) {\n    const { render, runtime, regions, maxDuration, ...methods } = options;\n    return normalizeProgrammaticRoute({\n      kind: \"api\",\n      path,\n      render,\n      runtime,\n      regions,\n      maxDuration,\n      methods: normalizeApiMethods(methods),\n    }) as ProgrammaticApiRoute;\n  },\n  redirect(source, destination, options = {}) {\n    return normalizeProgrammaticRoute({\n      kind: \"redirect\",\n      source,\n      destination,\n      ...options,\n    }) as ProgrammaticRedirectRoute;\n  },\n};\n\nexport const page = routesBuilder.page;\nexport const layout = routesBuilder.layout;\nexport const api = routesBuilder.api;\nexport const redirect = routesBuilder.redirect;\n\nexport interface ProgrammaticRouteSearchClientOptions {\n  stripDefaults?: boolean | readonly string[];\n  preserve?: readonly string[];\n  temporary?: readonly string[];\n}\n\nexport interface ProgrammaticRouteSearchResolution<TSearch = unknown> {\n  search: TSearch;\n  canonicalPath?: string;\n}\n\nexport function getProgrammaticRouteSearchSchema<TSearch = unknown>(\n  search: ProgrammaticRouteSearchConfig<TSearch> | undefined,\n): ProgrammaticRouteSchema<TSearch> | undefined {\n  if (!search) return undefined;\n  if (isProgrammaticRouteSchema(search)) return search;\n  return search.schema;\n}\n\nexport function getProgrammaticRouteSearchClientOptions(\n  search: ProgrammaticRouteSearchConfig<any> | undefined,\n): ProgrammaticRouteSearchClientOptions | undefined {\n  if (!search || isProgrammaticRouteSchema(search)) return undefined;\n\n  const options: ProgrammaticRouteSearchClientOptions = {};\n  if (typeof search.stripDefaults !== \"undefined\") options.stripDefaults = search.stripDefaults;\n  if (search.preserve?.length) options.preserve = [...search.preserve];\n  if (search.temporary?.length) options.temporary = [...search.temporary];\n\n  return Object.keys(options).length > 0 ? options : undefined;\n}\n\nfunction resolveProgrammaticRouteSearch<TSearch>(\n  searchConfig: ProgrammaticRouteSearchConfig<TSearch> | undefined,\n  rawSearch: ProgrammaticRouteSearchFallback,\n  path: string,\n  routePath: string,\n): ProgrammaticRouteSearchResolution<TSearch | ProgrammaticRouteSearchFallback> {\n  const schema = getProgrammaticRouteSearchSchema(searchConfig);\n  const search = parseProgrammaticSchema(schema, rawSearch, \"search\", routePath) as\n    | TSearch\n    | ProgrammaticRouteSearchFallback;\n  const options = getProgrammaticRouteSearchOptions(searchConfig);\n  const canonicalPath = resolveProgrammaticRouteCanonicalPath({\n    options,\n    schema,\n    rawSearch,\n    parsedSearch: search,\n    path,\n  });\n\n  return { search, canonicalPath };\n}\n\nfunction getProgrammaticRouteSearchOptions(\n  search: ProgrammaticRouteSearchConfig<any> | undefined,\n): ProgrammaticRouteSearchOptions<any> | undefined {\n  if (!search || isProgrammaticRouteSchema(search)) return undefined;\n  return search;\n}\n\nfunction isProgrammaticRouteSchema(value: unknown): value is ProgrammaticRouteSchema<any> {\n  return !!value && typeof value === \"object\" && typeof (value as any).parse === \"function\";\n}\n\nfunction resolveProgrammaticRouteCanonicalPath(input: {\n  options: ProgrammaticRouteSearchOptions<any> | undefined;\n  schema: ProgrammaticRouteSchema<any> | undefined;\n  rawSearch: ProgrammaticRouteSearchFallback;\n  parsedSearch: unknown;\n  path: string;\n}): string | undefined {\n  const options = input.options;\n  if (!options?.temporary?.length && !options?.stripDefaults) {\n    return undefined;\n  }\n\n  const params = createSearchParams(input.rawSearch);\n  const original = params.toString();\n\n  for (const key of options.temporary || []) {\n    params.delete(key);\n  }\n\n  if (options.stripDefaults) {\n    const defaultSearch = parseDefaultSearch(input.schema);\n    if (defaultSearch !== undefined) {\n      const keys =\n        options.stripDefaults === true\n          ? Array.from(new Set(Array.from(params.keys())))\n          : [...options.stripDefaults];\n\n      for (const key of keys) {\n        if (\n          params.has(key) &&\n          searchValuesEqual(\n            readSearchValue(input.parsedSearch, key),\n            readSearchValue(defaultSearch, key),\n          )\n        ) {\n          params.delete(key);\n        }\n      }\n    }\n  }\n\n  const next = params.toString();\n  if (next === original) {\n    return undefined;\n  }\n\n  return next ? `${input.path}?${next}` : input.path;\n}\n\nfunction createSearchParams(value: ProgrammaticRouteSearchFallback): URLSearchParams {\n  const params = new URLSearchParams();\n\n  for (const [key, item] of Object.entries(value)) {\n    if (item == null) continue;\n    const values = Array.isArray(item) ? item : [item];\n    for (const entry of values) {\n      if (entry != null) params.append(key, String(entry));\n    }\n  }\n\n  return params;\n}\n\nfunction parseDefaultSearch(\n  schema: ProgrammaticRouteSchema<any> | undefined,\n): Record<string, unknown> | undefined {\n  if (!schema) return undefined;\n\n  try {\n    const value = schema.parse({});\n    return value && typeof value === \"object\" ? (value as Record<string, unknown>) : undefined;\n  } catch {\n    return undefined;\n  }\n}\n\nfunction readSearchValue(value: unknown, key: string): unknown {\n  return value && typeof value === \"object\" ? (value as Record<string, unknown>)[key] : undefined;\n}\n\nfunction searchValuesEqual(left: unknown, right: unknown): boolean {\n  return (\n    JSON.stringify(normalizeComparableValue(left)) ===\n    JSON.stringify(normalizeComparableValue(right))\n  );\n}\n\nfunction normalizeComparableValue(value: unknown): unknown {\n  if (Array.isArray(value)) {\n    return value.map(normalizeComparableValue);\n  }\n  if (value && typeof value === \"object\") {\n    return Object.keys(value as Record<string, unknown>)\n      .sort()\n      .reduce<Record<string, unknown>>((output, key) => {\n        output[key] = normalizeComparableValue((value as Record<string, unknown>)[key]);\n        return output;\n      }, {});\n  }\n  return value;\n}\n\nexport function createRoute<\n  const TActions extends ProgrammaticRouteActions,\n  TDefaultAction extends keyof TActions | undefined = undefined,\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined = undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined = undefined,\n  TBeforeResult = unknown,\n  TMainResult = unknown,\n  TComponent extends ComponentType<any> = ComponentType<any>,\n>(\n  path: string,\n  options: Omit<\n    CreateRouteOptionsWithBefore<TParamsSchema, TSearchConfig, TBeforeResult, TMainResult>,\n    \"component\" | \"actions\" | \"defaultAction\" | \"action\"\n  > &\n    CreateRouteActionOptions<TActions, TDefaultAction> &\n    CreateRouteComponentOption<\n      TComponent,\n      ProgrammaticRouteComponentProps<\n        CreateRouteParams<TParamsSchema>,\n        CreateRouteSearch<TSearchConfig>,\n        Awaited<TMainResult>\n      >\n    >,\n): ProgrammaticRouteWithActions<\n  ProgrammaticPageRoute<\n    CreateRouteParams<TParamsSchema>,\n    CreateRouteSearch<TSearchConfig>,\n    CreateRouteDataHooksWithBefore<\n      CreateRouteParams<TParamsSchema>,\n      CreateRouteSearch<TSearchConfig>,\n      TBeforeResult,\n      TMainResult\n    >\n  >,\n  TActions,\n  TDefaultAction\n>;\nexport function createRoute<\n  const TActions extends ProgrammaticRouteActions,\n  TDefaultAction extends keyof TActions | undefined = undefined,\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined = undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined = undefined,\n  TMainResult = unknown,\n  TComponent extends ComponentType<any> = ComponentType<any>,\n>(\n  path: string,\n  options: Omit<\n    CreateRouteOptionsWithoutBefore<TParamsSchema, TSearchConfig, TMainResult>,\n    \"component\" | \"actions\" | \"defaultAction\" | \"action\"\n  > &\n    CreateRouteActionOptions<TActions, TDefaultAction> &\n    CreateRouteComponentOption<\n      TComponent,\n      ProgrammaticRouteComponentProps<\n        CreateRouteParams<TParamsSchema>,\n        CreateRouteSearch<TSearchConfig>,\n        Awaited<TMainResult>\n      >\n    >,\n): ProgrammaticRouteWithActions<\n  ProgrammaticPageRoute<\n    CreateRouteParams<TParamsSchema>,\n    CreateRouteSearch<TSearchConfig>,\n    CreateRouteDataHooksWithoutBefore<\n      CreateRouteParams<TParamsSchema>,\n      CreateRouteSearch<TSearchConfig>,\n      TMainResult\n    >\n  >,\n  TActions,\n  TDefaultAction\n>;\nexport function createRoute<\n  const TActions extends ProgrammaticRouteActions,\n  TDefaultAction extends keyof TActions | undefined = undefined,\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined = undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined = undefined,\n>(\n  path: string,\n  options: Omit<\n    CreateRouteOptionsWithoutData<TParamsSchema, TSearchConfig>,\n    \"actions\" | \"defaultAction\" | \"action\"\n  > &\n    CreateRouteActionOptions<TActions, TDefaultAction>,\n): ProgrammaticRouteWithActions<\n  ProgrammaticPageRoute<\n    CreateRouteParams<TParamsSchema>,\n    CreateRouteSearch<TSearchConfig>,\n    undefined\n  >,\n  TActions,\n  TDefaultAction\n>;\nexport function createRoute<\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined = undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined = undefined,\n  TBeforeResult = unknown,\n  TMainResult = unknown,\n  TComponent extends ComponentType<any> = ComponentType<any>,\n>(\n  path: string,\n  options: Omit<\n    CreateRouteOptionsWithBefore<TParamsSchema, TSearchConfig, TBeforeResult, TMainResult>,\n    \"component\" | \"actions\" | \"defaultAction\" | \"action\"\n  > & { actions?: undefined; defaultAction?: undefined } & CreateRouteComponentOption<\n      TComponent,\n      ProgrammaticRouteComponentProps<\n        CreateRouteParams<TParamsSchema>,\n        CreateRouteSearch<TSearchConfig>,\n        Awaited<TMainResult>\n      >\n    >,\n): ProgrammaticRouteWithActions<\n  ProgrammaticPageRoute<\n    CreateRouteParams<TParamsSchema>,\n    CreateRouteSearch<TSearchConfig>,\n    CreateRouteDataHooksWithBefore<\n      CreateRouteParams<TParamsSchema>,\n      CreateRouteSearch<TSearchConfig>,\n      TBeforeResult,\n      TMainResult\n    >\n  >,\n  {},\n  undefined\n>;\nexport function createRoute<\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined = undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined = undefined,\n  TMainResult = unknown,\n  TComponent extends ComponentType<any> = ComponentType<any>,\n>(\n  path: string,\n  options: Omit<\n    CreateRouteOptionsWithoutBefore<TParamsSchema, TSearchConfig, TMainResult>,\n    \"component\" | \"actions\" | \"defaultAction\" | \"action\"\n  > & { actions?: undefined; defaultAction?: undefined } & CreateRouteComponentOption<\n      TComponent,\n      ProgrammaticRouteComponentProps<\n        CreateRouteParams<TParamsSchema>,\n        CreateRouteSearch<TSearchConfig>,\n        Awaited<TMainResult>\n      >\n    >,\n): ProgrammaticRouteWithActions<\n  ProgrammaticPageRoute<\n    CreateRouteParams<TParamsSchema>,\n    CreateRouteSearch<TSearchConfig>,\n    CreateRouteDataHooksWithoutBefore<\n      CreateRouteParams<TParamsSchema>,\n      CreateRouteSearch<TSearchConfig>,\n      TMainResult\n    >\n  >,\n  {},\n  undefined\n>;\nexport function createRoute<\n  TParamsSchema extends ProgrammaticRouteSchema<any> | undefined = undefined,\n  TSearchConfig extends ProgrammaticRouteSearchConfig<any> | undefined = undefined,\n>(\n  path: string,\n  options: Omit<\n    CreateRouteOptionsWithoutData<TParamsSchema, TSearchConfig>,\n    \"actions\" | \"defaultAction\" | \"action\"\n  > & { actions?: undefined; defaultAction?: undefined },\n): ProgrammaticRouteWithActions<\n  ProgrammaticPageRoute<\n    CreateRouteParams<TParamsSchema>,\n    CreateRouteSearch<TSearchConfig>,\n    undefined\n  >,\n  {},\n  undefined\n>;\nexport function createRoute(path: string, options: any): any {\n  return routesBuilder.page(path, options);\n}\n\nexport function isProgrammaticRoutesFileName(fileName: string): boolean {\n  const normalized = fileName.replace(/\\\\/g, \"/\");\n  const baseName = normalized.split(\"/\").pop() || normalized;\n  return PROGRAMMATIC_ROUTE_FILE_NAMES.includes(baseName);\n}\n\nexport function getProgrammaticRouteManifest(\n  mod: Record<string, any> | null | undefined,\n): ProgrammaticRouteManifest | null {\n  if (!mod) return null;\n\n  const candidates = [mod.default, mod.routes, mod.Route];\n  for (const candidate of candidates) {\n    if (isProgrammaticRouteManifest(candidate)) {\n      return candidate;\n    }\n    if (isProgrammaticRouteDefinition(candidate)) {\n      return defineRoutes([candidate]);\n    }\n    if (Array.isArray(candidate)) {\n      return defineRoutes(candidate as ProgrammaticRouteDefinition[]);\n    }\n  }\n\n  const routeDefinitions = Object.values(mod).filter(isProgrammaticRouteDefinition);\n  if (routeDefinitions.length > 0) {\n    return defineRoutes(routeDefinitions);\n  }\n\n  return null;\n}\n\nexport function isProgrammaticRouteManifest(value: unknown): value is ProgrammaticRouteManifest {\n  return (\n    !!value &&\n    typeof value === \"object\" &&\n    (value as ProgrammaticRouteManifest).__farmRoutes === true &&\n    Array.isArray((value as ProgrammaticRouteManifest).routes)\n  );\n}\n\nexport function isProgrammaticRouteDefinition(\n  value: unknown,\n): value is ProgrammaticRouteDefinition {\n  if (!value || typeof value !== \"object\") {\n    return false;\n  }\n\n  const kind = (value as { kind?: unknown }).kind;\n  return kind === \"page\" || kind === \"layout\" || kind === \"api\" || kind === \"redirect\";\n}\n\nexport function createProgrammaticRouteModuleId(\n  filePath: string,\n  kind: \"page\" | \"layout\" | \"api\",\n  routePath: string,\n): string {\n  return `${filePath}?farm-route=${kind}:${encodeURIComponent(normalizeRoutePath(routePath))}`;\n}\n\nexport function parseProgrammaticRouteModuleId(moduleId: string): {\n  filePath: string;\n  kind: \"page\" | \"layout\" | \"api\";\n  routePath: string;\n} | null {\n  const queryIndex = moduleId.indexOf(\"?\");\n  if (queryIndex === -1) {\n    return null;\n  }\n\n  const filePath = moduleId.slice(0, queryIndex);\n  const params = new URLSearchParams(moduleId.slice(queryIndex + 1));\n  const value = params.get(\"farm-route\");\n  if (!value) {\n    return null;\n  }\n\n  const separator = value.indexOf(\":\");\n  if (separator === -1) {\n    return null;\n  }\n\n  const kind = value.slice(0, separator);\n  if (kind !== \"page\" && kind !== \"layout\" && kind !== \"api\") {\n    return null;\n  }\n\n  return {\n    filePath,\n    kind,\n    routePath: normalizeRoutePath(value.slice(separator + 1)),\n  };\n}\n\nexport function parseProgrammaticRoutePath(\n  routePath: string,\n  type: ParsedRoute[\"type\"] = \"page\",\n): ParsedRoute {\n  return parseSharedProgrammaticRoutePath(routePath, type);\n}\n\nexport function createRouteModuleFromProgrammaticPage(\n  route: ProgrammaticPageRoute,\n  rendererRuntime?: Pick<FarmServerRendererRuntime, \"createElement\" | \"Suspense\">,\n): RouteModule {\n  const mod: RouteModule = {\n    default: createProgrammaticPageComponent(route, rendererRuntime),\n    ...normalizeFarmRouteRuntimeConfig(route, `Route \"${route.path}\"`),\n  };\n\n  if (route.params || route.search || route.guard || route.data) {\n    (mod as any).__farmRouteSchemas = {\n      params: route.params,\n      search: getProgrammaticRouteSearchSchema(route.search),\n    };\n    (mod as any).__farmRouteSearch = getProgrammaticRouteSearchClientOptions(route.search);\n    (mod as any).__farmRouteGuard = route.guard;\n    (mod as any).__farmRouteData = route.data;\n    (mod as any).__farmRouteParsesProps = true;\n    (mod as any).__farmResolveRouteProps = (props: PageProps) =>\n      resolveProgrammaticRouteProps(route, props);\n    (mod as any).__farmResolveRouteCanonicalPath = (\n      rawSearch: ProgrammaticRouteSearchFallback,\n      path: string,\n    ) => resolveProgrammaticRouteSearch(route.search, rawSearch, path, route.path).canonicalPath;\n  }\n\n  if (route.pending || route.error || route.notFound) {\n    (mod as any).__farmRouteComponents = {\n      pending: route.pending,\n      error: route.error,\n      notFound: route.notFound,\n    };\n  }\n\n  if (route.render === \"static\" || route.staticPaths) {\n    mod.ssg = true;\n    mod.dynamic = \"force-static\";\n  } else if (route.render === \"dynamic\") {\n    mod.ssg = false;\n    mod.dynamic = \"force-dynamic\";\n  }\n\n  if (typeof route.revalidate !== \"undefined\") {\n    mod.revalidate = route.revalidate;\n  }\n\n  if (route.ppr) {\n    mod.ppr = true;\n  }\n\n  if (route.metadata) {\n    mod.metadata = route.metadata;\n  }\n\n  if (route.generateMetadata) {\n    mod.generateMetadata = route.generateMetadata;\n  }\n\n  if (route.staticPaths) {\n    mod.getStaticPaths = async () => normalizeStaticPaths(route.path, await route.staticPaths!());\n  }\n\n  return mod;\n}\n\nexport function createLayoutModuleFromProgrammaticLayout(route: ProgrammaticLayoutRoute) {\n  return {\n    default: route.component,\n    ...normalizeFarmRouteRuntimeConfig(route, `Layout \"${route.path}\"`),\n    metadata: route.metadata,\n    generateMetadata: route.generateMetadata,\n  };\n}\n\nexport function scanProgrammaticPagePaths(source: string): string[] {\n  const paths = new Set<string>();\n\n  for (const routePath of extractProgrammaticPageCallPathLiterals(source)) {\n    if (routePath) {\n      paths.add(normalizeRoutePath(routePath));\n    }\n  }\n\n  return Array.from(paths);\n}\n\nfunction createProgrammaticPageComponent(\n  route: ProgrammaticPageRoute,\n  rendererRuntime?: Pick<FarmServerRendererRuntime, \"createElement\" | \"Suspense\">,\n): ComponentType<PageProps> {\n  if (\n    !route.params &&\n    !route.search &&\n    !route.guard &&\n    !route.data &&\n    !route.pending &&\n    !route.error &&\n    !route.notFound\n  ) {\n    return route.component as ComponentType<PageProps>;\n  }\n\n  const createElement: FarmServerRendererRuntime[\"createElement\"] = (...args) => {\n    if (!rendererRuntime) {\n      throw new Error(\n        `Programmatic route \"${route.path}\" requires a FARMJS renderer runtime before it can render.`,\n      );\n    }\n    return rendererRuntime.createElement(...args);\n  };\n  const Component = route.component;\n\n  if (route.pending) {\n    const PendingComponent = route.pending;\n    const routePropsResources = new WeakMap<object, ProgrammaticRoutePropsResource>();\n    const FarmProgrammaticPageContent = function FarmProgrammaticPageContent(props: PageProps) {\n      try {\n        const resolvedProps = readProgrammaticRouteProps(route, props, routePropsResources);\n        return createElement(Component, stripProgrammaticRoutePropsMarker(resolvedProps));\n      } catch (error) {\n        if (isPromiseLike(error) || isProgrammaticRedirectSignal(error)) {\n          throw error;\n        }\n\n        if (isProgrammaticNotFoundSignal(error) && route.notFound) {\n          return createElement(route.notFound, createProgrammaticRouteErrorProps(error, props));\n        }\n\n        if (route.error) {\n          return createElement(route.error, createProgrammaticRouteErrorProps(error, props));\n        }\n\n        throw error;\n      }\n    };\n    const PageContent = FarmProgrammaticPageContent as unknown as ComponentType<PageProps>;\n    const FarmProgrammaticPage = function FarmProgrammaticPage(props: PageProps) {\n      return createElement(\n        rendererRuntime!.Suspense,\n        {\n          fallback: createElement(PendingComponent, createProgrammaticRoutePendingProps(props)),\n        },\n        createElement(PageContent, props),\n      );\n    };\n\n    return FarmProgrammaticPage as unknown as ComponentType<PageProps>;\n  }\n\n  const FarmProgrammaticPageContent = async function FarmProgrammaticPageContent(props: PageProps) {\n    try {\n      const resolvedProps = isProgrammaticRoutePropsResolved(props)\n        ? props\n        : await resolveProgrammaticRouteProps(route, props);\n\n      return createElement(Component, stripProgrammaticRoutePropsMarker(resolvedProps));\n    } catch (error) {\n      if (isProgrammaticRedirectSignal(error)) {\n        throw error;\n      }\n\n      if (isProgrammaticNotFoundSignal(error) && route.notFound) {\n        return createElement(route.notFound, createProgrammaticRouteErrorProps(error, props));\n      }\n\n      if (route.error) {\n        return createElement(route.error, createProgrammaticRouteErrorProps(error, props));\n      }\n\n      throw error;\n    }\n  };\n\n  return FarmProgrammaticPageContent as unknown as ComponentType<PageProps>;\n}\n\ntype ProgrammaticRoutePropsResource =\n  | { status: \"pending\"; promise: Promise<Record<string, any>> }\n  | { status: \"resolved\"; value: Record<string, any> }\n  | { status: \"rejected\"; error: unknown };\n\nfunction readProgrammaticRouteProps(\n  route: ProgrammaticPageRoute,\n  props: PageProps,\n  resources: WeakMap<object, ProgrammaticRoutePropsResource>,\n): Record<string, any> {\n  if (isProgrammaticRoutePropsResolved(props)) {\n    return props;\n  }\n\n  let resource = resources.get(props as object);\n  if (!resource) {\n    const deferredRouteProps = (props as any).__farmRoutePropsPromise;\n    const promise = Promise.resolve<Record<string, any>>(\n      isPromiseLike(deferredRouteProps)\n        ? (deferredRouteProps as PromiseLike<Record<string, any>>)\n        : resolveProgrammaticRouteProps(route, props),\n    );\n    resource = { status: \"pending\", promise };\n    resources.set(props as object, resource);\n    promise.then(\n      (value) => resources.set(props as object, { status: \"resolved\", value }),\n      (error) => resources.set(props as object, { status: \"rejected\", error }),\n    );\n  }\n\n  if (resource.status === \"pending\") throw resource.promise;\n  if (resource.status === \"rejected\") throw resource.error;\n  return resource.value;\n}\n\nfunction isPromiseLike(value: unknown): value is PromiseLike<unknown> {\n  return Boolean(\n    value &&\n    (typeof value === \"object\" || typeof value === \"function\") &&\n    typeof (value as PromiseLike<unknown>).then === \"function\",\n  );\n}\n\nfunction createProgrammaticRoutePendingProps(\n  props: PageProps,\n): ProgrammaticRoutePendingComponentProps {\n  return {\n    params: props.params,\n    searchParams: props.searchParams,\n    path: props.path,\n  };\n}\n\nfunction createProgrammaticRouteErrorProps(\n  error: unknown,\n  props: PageProps,\n): ProgrammaticRouteErrorComponentProps {\n  return {\n    error,\n    params: props.params,\n    searchParams: props.searchParams,\n    path: props.path,\n  };\n}\n\nfunction isProgrammaticRedirectSignal(error: unknown): boolean {\n  if (!error || typeof error !== \"object\") return false;\n  const digest = (error as { digest?: unknown }).digest;\n  return typeof digest === \"string\" && digest.startsWith(\"FARM_REDIRECT;\");\n}\n\nfunction isProgrammaticNotFoundSignal(error: unknown): boolean {\n  if (!error || typeof error !== \"object\") return false;\n  const digest = (error as { digest?: unknown }).digest;\n  return digest === \"FARM_NOT_FOUND\";\n}\n\nasync function resolveProgrammaticRouteProps(\n  route: ProgrammaticPageRoute,\n  props: PageProps,\n): Promise<Record<string, any> & { __farmRoutePropsResolved: true }> {\n  const rawSearch = await props.searchParams;\n  const params = parseProgrammaticSchema(route.params, props.params, \"params\", route.path);\n  const { search, canonicalPath } = resolveProgrammaticRouteSearch(\n    route.search,\n    rawSearch,\n    props.path,\n    route.path,\n  );\n  const routeContextValue = getFarmRouteContext(props);\n  const pluginContext = props.context;\n  const baseProps = {\n    ...props,\n    params,\n    search,\n    searchParams: Promise.resolve(search),\n  };\n  const routeContextProps = {\n    ...baseProps,\n    context: routeContextValue,\n    pluginContext,\n  };\n\n  if (route.guard) {\n    await route.guard(routeContextProps as any);\n  }\n\n  if (!route.data) {\n    return markProgrammaticRoutePropsResolved(addCanonicalPath(baseProps, canonicalPath));\n  }\n\n  const before = route.data.before ? await route.data.before(routeContextProps as any) : undefined;\n  const dataContext = {\n    ...(routeContextProps as any),\n    before,\n  };\n  const data = await resolveProgrammaticRouteData(route, route.data, dataContext);\n\n  if (route.data.after) {\n    await route.data.after({\n      ...(routeContextProps as any),\n      before,\n      data,\n    });\n  }\n\n  return markProgrammaticRoutePropsResolved({\n    ...baseProps,\n    data,\n    ...(canonicalPath ? { __farmCanonicalPath: canonicalPath } : {}),\n  });\n}\n\nasync function resolveProgrammaticRouteData(\n  route: ProgrammaticPageRoute,\n  dataHooks: ProgrammaticRouteDataHooks<any, any, any, any>,\n  context: ProgrammaticRouteDataCacheContext<any, any, any>,\n): Promise<unknown> {\n  if (!dataHooks?.key) {\n    return dataHooks.main(context);\n  }\n\n  const routeDataKey = await dataHooks.key(context);\n  if (routeDataKey == null) {\n    return dataHooks.main(context);\n  }\n\n  const cacheKey = createFarmCacheKey([\"route-data\", routeDataKey]);\n  const cacheOptions: FarmCacheOptions = {\n    tags: [\n      createRouteDataCacheTag(routeDataKey),\n      ...(await resolveProgrammaticRouteDataKeys(dataHooks.tags, context)),\n    ],\n    paths: [\n      ...(typeof context.path === \"string\" ? [context.path] : []),\n      ...(await resolveProgrammaticRouteDataKeys(dataHooks.paths, context)),\n    ],\n    revalidate: normalizeProgrammaticRouteStaleTime(dataHooks.staleTime),\n  };\n\n  return getFarmDataCache().getOrSet(cacheKey, () => dataHooks.main(context), cacheOptions);\n}\n\nasync function resolveProgrammaticRouteDataKeys(\n  input: ProgrammaticRouteDataCacheKeys<any, any, any> | undefined,\n  context: ProgrammaticRouteDataCacheContext<any, any, any>,\n): Promise<readonly string[]> {\n  if (!input) return [];\n  const value = typeof input === \"function\" ? await input(context) : input;\n  return value.filter((item) => typeof item === \"string\" && item.trim().length > 0);\n}\n\nfunction normalizeProgrammaticRouteStaleTime(\n  staleTime: ProgrammaticRouteDataStaleTime | undefined,\n): number | false | undefined {\n  if (staleTime === undefined) return undefined;\n  if (staleTime === false) return false;\n\n  if (typeof staleTime === \"number\") {\n    if (!Number.isFinite(staleTime) || staleTime <= 0) return undefined;\n    return Math.max(1, Math.ceil(staleTime / 1000));\n  }\n\n  const match = staleTime.match(/^(\\d+(?:\\.\\d+)?)(ms|s|m|h)$/);\n  if (!match) return undefined;\n\n  const value = Number(match[1]);\n  if (!Number.isFinite(value) || value <= 0) return undefined;\n\n  const unit = match[2];\n  const milliseconds =\n    unit === \"ms\"\n      ? value\n      : unit === \"s\"\n        ? value * 1000\n        : unit === \"m\"\n          ? value * 60000\n          : value * 3600000;\n\n  return Math.max(1, Math.ceil(milliseconds / 1000));\n}\n\nfunction isProgrammaticRoutePropsResolved(value: unknown): boolean {\n  return !!value && typeof value === \"object\" && (value as any).__farmRoutePropsResolved === true;\n}\n\nfunction markProgrammaticRoutePropsResolved<T extends Record<string, any>>(\n  props: T,\n): T & { __farmRoutePropsResolved: true } {\n  return {\n    ...props,\n    __farmRoutePropsResolved: true,\n  };\n}\n\nfunction addCanonicalPath<T extends Record<string, any>>(\n  props: T,\n  canonicalPath: string | undefined,\n): T {\n  return canonicalPath ? ({ ...props, __farmCanonicalPath: canonicalPath } as T) : props;\n}\n\nfunction stripProgrammaticRoutePropsMarker<TProps>(props: TProps): TProps {\n  if (!isProgrammaticRoutePropsResolved(props)) {\n    return props;\n  }\n\n  const {\n    __farmRoutePropsResolved,\n    __farmCanonicalPath,\n    __farmRoutePropsPromise,\n    ...componentProps\n  } = props as any;\n  return componentProps;\n}\n\nfunction parseProgrammaticSchema<TFallback>(\n  schema: ProgrammaticRouteSchema<any> | undefined,\n  value: TFallback,\n  label: string,\n  routePath: string,\n): unknown {\n  if (!schema) {\n    return value;\n  }\n\n  try {\n    return schema.parse(value);\n  } catch (error) {\n    const message = error instanceof Error ? error.message : String(error);\n    throw new Error(`Invalid ${label} for route \"${routePath}\": ${message}`);\n  }\n}\n\nfunction normalizeProgrammaticRoute(\n  route: ProgrammaticRouteDefinition,\n): ProgrammaticRouteDefinition {\n  if (route.kind === \"redirect\") {\n    return {\n      ...route,\n      source: normalizeRoutePath(route.source),\n    };\n  }\n\n  if (route.kind === \"api\") {\n    return {\n      ...route,\n      ...normalizeFarmRouteRuntimeConfig(route, `API route \"${route.path}\"`),\n      path: normalizeRoutePath(route.path),\n      methods: normalizeApiMethods(route.methods),\n    };\n  }\n\n  const routeActions = route.kind === \"page\" ? normalizeProgrammaticRouteActions(route) : undefined;\n\n  return {\n    ...route,\n    ...routeActions,\n    ...normalizeFarmRouteRuntimeConfig(\n      route,\n      `${route.kind === \"layout\" ? \"Layout\" : \"Route\"} \"${route.path}\"`,\n    ),\n    path: normalizeRoutePath(route.path),\n  };\n}\n\nfunction normalizeProgrammaticRouteActions(route: ProgrammaticPageRoute): {\n  actions?: ProgrammaticRouteActions;\n  defaultAction?: string;\n  action?: ProgrammaticRouteAction;\n} {\n  const entries = Object.entries(route.actions ?? {});\n\n  if (entries.length === 0) {\n    if (route.defaultAction !== undefined) {\n      throw new TypeError(\n        `Route \"${route.path}\" declares defaultAction without declaring any actions.`,\n      );\n    }\n    return {};\n  }\n\n  for (const [name, action] of entries) {\n    if (typeof action !== \"function\") {\n      throw new TypeError(`Route \"${route.path}\" action \"${name}\" must be a server function.`);\n    }\n  }\n\n  const defaultAction = route.defaultAction ?? entries[0]![0];\n  const actions = Object.freeze({ ...route.actions });\n  const action = actions[defaultAction];\n\n  if (!action) {\n    throw new TypeError(\n      `Route \"${route.path}\" defaultAction \"${defaultAction}\" does not match a declared action.`,\n    );\n  }\n\n  return {\n    actions,\n    defaultAction,\n    action,\n  };\n}\n\nfunction normalizeRoutePath(routePath: string): string {\n  const withSlash = routePath.startsWith(\"/\") ? routePath : `/${routePath}`;\n  const withoutTrailing = withSlash.length > 1 ? withSlash.replace(/\\/+$/, \"\") : withSlash;\n  return withoutTrailing || \"/\";\n}\n\nfunction normalizeApiMethods(\n  methods: Record<string, any>,\n): Partial<Record<ProgrammaticRouteMethod, any>> {\n  const normalized: Partial<Record<ProgrammaticRouteMethod, any>> = {};\n\n  for (const [method, handler] of Object.entries(methods)) {\n    const normalizedMethod = method.toUpperCase() as ProgrammaticRouteMethod;\n    if (handler && isProgrammaticRouteMethod(normalizedMethod)) {\n      normalized[normalizedMethod] = handler;\n    }\n  }\n\n  return normalized;\n}\n\nfunction isProgrammaticRouteMethod(method: string): method is ProgrammaticRouteMethod {\n  return (\n    method === \"GET\" ||\n    method === \"HEAD\" ||\n    method === \"QUERY\" ||\n    method === \"POST\" ||\n    method === \"PUT\" ||\n    method === \"DELETE\" ||\n    method === \"PATCH\" ||\n    method === \"OPTIONS\"\n  );\n}\n\nfunction normalizeStaticPaths(\n  routePath: string,\n  paths: readonly ProgrammaticStaticPath[],\n): Record<string, string>[] {\n  const dynamicSegments = parseProgrammaticRoutePath(routePath).segments.filter(\n    (segment) => segment.isDynamic,\n  );\n\n  return paths.map((entry) => {\n    if (typeof entry === \"string\" || Array.isArray(entry)) {\n      if (dynamicSegments.length !== 1) {\n        throw new Error(\n          `staticPaths for \"${routePath}\" must return objects when the route has ${dynamicSegments.length} dynamic params.`,\n        );\n      }\n\n      const value = Array.isArray(entry) ? entry.join(\"/\") : entry;\n      return { [dynamicSegments[0].segment]: String(value) };\n    }\n\n    return Object.fromEntries(\n      Object.entries(entry).map(([key, value]) => [\n        key,\n        Array.isArray(value) ? value.map(String).join(\"/\") : String(value),\n      ]),\n    );\n  });\n}\n"],"mappings":"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","names":["parseProgrammaticRoutePath","FarmProgrammaticPageContent","FarmProgrammaticPage","action"]}