{"version":3,"sources":["../src/renderer-client.ts"],"sourcesContent":["\"use client\";\n\nimport { createFarmRouter, type FarmRouter, type FarmRouterRouteInput } from \"./router\";\nimport {\n  getRouter as getSPARouter,\n  readPageState,\n  type FarmNavigationState,\n  type FarmNavigateOptions,\n} from \"./client/spa-router\";\nimport { subscribeHistoryChange } from \"./client/history-sync\";\nimport { getFarmClientDataCache, type FarmClientCacheStatus } from \"./client-cache\";\nimport { attachRevalidationListeners } from \"./client-revalidation\";\nimport type { ServerFn } from \"./server-fn\";\nimport type { ServerQuery } from \"./server-query\";\nimport {\n  createServerQueryCallKey,\n  fetchServerQuery,\n  type ServerQueryFetchOptions,\n} from \"./server-query-runtime\";\nimport { getTheme, setTheme, subscribeTheme, toggleTheme } from \"./theme/runtime\";\nimport type { FarmThemePreference, FarmThemeSnapshot } from \"./theme/types\";\nimport { createFarmLocaleCookie } from \"./i18n/resolver\";\nimport { localizeFarmHref, stripFarmLocaleFromPathname } from \"./i18n/routing\";\nimport {\n  createFarmClientTranslator,\n  getFarmI18nClientState,\n  subscribeFarmI18n,\n} from \"./i18n/client-runtime\";\nimport type { FarmI18nClientSnapshot, FarmI18nLocale, FarmTranslator } from \"./i18n/types\";\n\nexport type { FarmI18nClientSnapshot, FarmI18nLocale, FarmTranslator } from \"./i18n/types\";\nimport {\n  applyFarmBasePath,\n  getFarmBasePath,\n  normalizeFarmBasePath,\n  stripFarmBasePath,\n} from \"./base-path\";\n\nexport interface FarmClientStore<TSnapshot> {\n  getSnapshot(): TSnapshot;\n  subscribe(listener: () => void): () => void;\n}\n\nexport interface FarmRendererRouterOptions {\n  basePath?: string;\n  routes?: readonly FarmRouterRouteInput[];\n}\n\nexport interface FarmRendererRouterSnapshot {\n  pathname: string;\n  searchParams: URLSearchParams;\n  params: Record<string, string>;\n  pageState: unknown;\n  navigation: FarmNavigationState;\n}\n\nexport interface FarmRendererRouter extends FarmClientStore<FarmRendererRouterSnapshot> {\n  push(href: string, options?: Omit<FarmNavigateOptions, \"replace\">): Promise<void>;\n  replace(href: string, options?: Omit<FarmNavigateOptions, \"replace\">): Promise<void>;\n  refresh(options?: Omit<FarmNavigateOptions, \"replace\" | \"refresh\">): Promise<void>;\n  prefetch(href: string): Promise<void>;\n  back(): void;\n  forward(): void;\n  pushState<TState>(state: TState, href?: string): void;\n  replaceState<TState>(state: TState, href?: string): void;\n}\n\nexport function createRendererRouter(options: FarmRendererRouterOptions = {}): FarmRendererRouter {\n  const basePath =\n    options.basePath === undefined ? getFarmBasePath() : normalizeFarmBasePath(options.basePath);\n  const matcher = options.routes?.length ? createFarmRouter([...options.routes]) : null;\n  const router = getSPARouter();\n  let snapshot = readRendererRouterSnapshot(basePath, matcher, router.getNavigationState());\n\n  const read = () => {\n    snapshot = readRendererRouterSnapshot(basePath, matcher, router.getNavigationState());\n    return snapshot;\n  };\n\n  return {\n    getSnapshot: () => snapshot,\n    subscribe(listener) {\n      if (typeof window === \"undefined\") return () => {};\n      const notify = () => {\n        read();\n        listener();\n      };\n      const unsubscribeNavigation = router.subscribeNavigation(notify);\n      const unsubscribeHistory = subscribeHistoryChange(notify);\n      read();\n      return () => {\n        unsubscribeNavigation();\n        unsubscribeHistory();\n      };\n    },\n    push(href, navigateOptions) {\n      return typeof window === \"undefined\"\n        ? Promise.resolve()\n        : router.navigate(resolveRendererHref(href, basePath), navigateOptions);\n    },\n    replace(href, navigateOptions) {\n      return typeof window === \"undefined\"\n        ? Promise.resolve()\n        : router.navigate(resolveRendererHref(href, basePath), {\n            ...navigateOptions,\n            replace: true,\n          });\n    },\n    refresh: (refreshOptions) =>\n      typeof window === \"undefined\" ? Promise.resolve() : router.refresh(refreshOptions),\n    prefetch: (href) =>\n      typeof window === \"undefined\"\n        ? Promise.resolve()\n        : router.prefetch(resolveRendererHref(href, basePath)),\n    back() {\n      if (typeof window !== \"undefined\") window.history.back();\n    },\n    forward() {\n      if (typeof window !== \"undefined\") window.history.forward();\n    },\n    pushState(state, href) {\n      if (typeof window !== \"undefined\") {\n        router.pushState(state, href && resolveRendererHref(href, basePath));\n        read();\n      }\n    },\n    replaceState(state, href) {\n      if (typeof window !== \"undefined\") {\n        router.replaceState(state, href && resolveRendererHref(href, basePath));\n        read();\n      }\n    },\n  };\n}\n\nexport type FarmActionStatus = \"idle\" | \"pending\" | \"success\" | \"error\";\n\nexport interface FarmActionSnapshot<TResult, TError extends Error = Error> {\n  pending: boolean;\n  status: FarmActionStatus;\n  data: TResult | null;\n  error: TError | null;\n}\n\nexport interface FarmActionOptions<TInput, TResult, TError extends Error = Error> {\n  initialResult?: TResult | null;\n  resetOnSubmit?: boolean;\n  optimistic?: (context: {\n    input: TInput | FormData | undefined;\n    formData?: FormData;\n    current: TResult | null;\n  }) => TResult | null | undefined;\n  rollbackOnError?: boolean;\n  onSuccess?: (result: TResult) => void;\n  onError?: (error: TError) => void;\n  onSettled?: (result: TResult | null, error: TError | null) => void;\n}\n\nexport type FarmActionSubmit<TInput, TResult> = [unknown] extends [TInput]\n  ? (input?: TInput | FormData) => Promise<TResult>\n  : (input: TInput | FormData) => Promise<TResult>;\n\nexport type FarmAction<TInput, TResult, TError extends Error = Error> = FarmClientStore<\n  FarmActionSnapshot<TResult, TError>\n> & {\n  submit: FarmActionSubmit<TInput, TResult>;\n  reset(): void;\n};\n\nexport type FarmRouteActionTarget<TServerFn extends ServerFn<any, any, any>> = {\n  readonly action: TServerFn;\n};\n\nexport function createRendererAction<TInput, TResult, TError extends Error = Error>(\n  target:\n    | ServerFn<TInput, TResult, TError>\n    | FarmRouteActionTarget<ServerFn<TInput, TResult, TError>>,\n  options: FarmActionOptions<TInput, TResult, TError> = {},\n): FarmAction<TInput, TResult, TError> {\n  const serverFn = resolveRendererServerFn(target);\n  const listeners = new Set<() => void>();\n  const initialResult = options.initialResult ?? null;\n  let requestId = 0;\n  let pendingCount = 0;\n  let latestSettledStatus: FarmActionSnapshot<TResult, TError>[\"status\"] = \"idle\";\n  let snapshot: FarmActionSnapshot<TResult, TError> = {\n    pending: false,\n    status: \"idle\",\n    data: initialResult,\n    error: null,\n  };\n\n  const update = (next: FarmActionSnapshot<TResult, TError>) => {\n    snapshot = next;\n    for (const listener of listeners) listener();\n  };\n\n  return {\n    getSnapshot: () => snapshot,\n    subscribe(listener) {\n      listeners.add(listener);\n      return () => listeners.delete(listener);\n    },\n    async submit(input?: TInput | FormData) {\n      const currentRequest = ++requestId;\n      const previous = snapshot.data;\n      const formData = isRendererFormData(input) ? input : undefined;\n      const optimistic = options.optimistic?.({ input, formData, current: previous });\n      const hasOptimistic = optimistic !== undefined;\n      pendingCount += 1;\n      update({\n        pending: true,\n        status: \"pending\",\n        data: hasOptimistic ? optimistic : options.resetOnSubmit === false ? previous : null,\n        error: null,\n      });\n\n      try {\n        const result = await serverFn(input as TInput | FormData);\n        pendingCount = Math.max(0, pendingCount - 1);\n        if (currentRequest === requestId) {\n          latestSettledStatus = \"success\";\n          update({\n            pending: pendingCount > 0,\n            status: pendingCount > 0 ? \"pending\" : \"success\",\n            data: result,\n            error: null,\n          });\n          options.onSuccess?.(result);\n          options.onSettled?.(result, null);\n        } else if (pendingCount === 0) {\n          update({ ...snapshot, pending: false, status: latestSettledStatus });\n        }\n        return result;\n      } catch (cause) {\n        pendingCount = Math.max(0, pendingCount - 1);\n        const error = normalizeRendererClientError(cause) as TError;\n        if (currentRequest === requestId) {\n          latestSettledStatus = \"error\";\n          update({\n            pending: pendingCount > 0,\n            status: pendingCount > 0 ? \"pending\" : \"error\",\n            data:\n              hasOptimistic && options.rollbackOnError\n                ? previous\n                : options.resetOnSubmit === false\n                  ? snapshot.data\n                  : null,\n            error,\n          });\n          options.onError?.(error);\n          options.onSettled?.(null, error);\n        } else if (pendingCount === 0) {\n          update({ ...snapshot, pending: false, status: latestSettledStatus });\n        }\n        throw error;\n      }\n    },\n    reset() {\n      requestId += 1;\n      pendingCount = 0;\n      latestSettledStatus = \"idle\";\n      update({ pending: false, status: \"idle\", data: initialResult, error: null });\n    },\n  } as FarmAction<TInput, TResult, TError>;\n}\n\nexport interface FarmRendererQueryOptions extends ServerQueryFetchOptions {\n  enabled?: boolean;\n  refetchOnWindowFocus?: boolean;\n  refetchOnReconnect?: boolean;\n}\n\nexport interface FarmRendererQuerySnapshot<TData> {\n  data: TData | undefined;\n  error: Error | null;\n  status: FarmClientCacheStatus;\n  pending: boolean;\n  fetching: boolean;\n  stale: boolean;\n}\n\nexport interface FarmRendererQuery<TData> extends FarmClientStore<\n  FarmRendererQuerySnapshot<TData>\n> {\n  refetch(): Promise<TData>;\n  dispose(): void;\n}\n\nexport function createRendererQuery<TInput, TData>(\n  query: ServerQuery<TInput, TData>,\n  input: TInput,\n  options: FarmRendererQueryOptions = {},\n): FarmRendererQuery<TData> {\n  const cache = getFarmClientDataCache();\n  const key = createServerQueryCallKey(query, input);\n  const listeners = new Set<() => void>();\n  let unsubscribeCache: (() => void) | undefined;\n  let cleanupBrowser: (() => void) | undefined;\n\n  const run = (force = false) => fetchServerQuery(query, input, { ...options, force });\n  const ensureStarted = () => {\n    if (options.enabled === false || unsubscribeCache) return;\n    unsubscribeCache = cache.subscribe(key, () => {\n      for (const listener of listeners) listener();\n    });\n    if (!cache.get(key) || cache.isStale(key)) void run().catch(() => undefined);\n\n    cleanupBrowser = attachRevalidationListeners(\n      () => {\n        if (cache.isStale(key)) void run().catch(() => undefined);\n      },\n      {\n        refetchOnWindowFocus: options.refetchOnWindowFocus,\n        refetchOnReconnect: options.refetchOnReconnect,\n      },\n    );\n  };\n\n  return {\n    getSnapshot() {\n      const entry = cache.get<TData>(key);\n      const status = entry?.status ?? (entry ? \"success\" : \"idle\");\n      return {\n        data: entry?.data,\n        error: entry?.error ?? null,\n        status,\n        pending: status === \"pending\" && (entry?.updatedAt ?? 0) === 0,\n        fetching: entry?.fetching ?? false,\n        stale: cache.isStale(key),\n      };\n    },\n    subscribe(listener) {\n      listeners.add(listener);\n      ensureStarted();\n      return () => listeners.delete(listener);\n    },\n    refetch: () => run(true),\n    dispose() {\n      unsubscribeCache?.();\n      cleanupBrowser?.();\n      unsubscribeCache = undefined;\n      cleanupBrowser = undefined;\n      listeners.clear();\n    },\n  };\n}\n\nexport interface FarmRendererTheme extends FarmClientStore<FarmThemeSnapshot> {\n  setTheme(theme: FarmThemePreference): void;\n  toggleTheme(): FarmThemeSnapshot[\"resolvedTheme\"];\n}\n\nexport function createRendererTheme(): FarmRendererTheme {\n  return {\n    getSnapshot: getTheme,\n    subscribe: subscribeTheme,\n    setTheme,\n    toggleTheme,\n  };\n}\n\nexport interface FarmRendererI18n extends FarmClientStore<FarmI18nClientSnapshot | undefined> {\n  readonly t: FarmTranslator;\n  setLocale(locale: FarmI18nLocale): void;\n}\n\nexport function createRendererI18n(): FarmRendererI18n {\n  return {\n    getSnapshot: getFarmI18nClientState,\n    subscribe: subscribeFarmI18n,\n    t: createFarmClientTranslator(),\n    setLocale(locale) {\n      const snapshot = getFarmI18nClientState();\n      if (!snapshot) throw new Error(\"Farm i18n is not configured or has not been hydrated.\");\n      if (!snapshot.locales.includes(locale)) {\n        throw new Error(`Unsupported Farm i18n locale \"${locale}\".`);\n      }\n      if (typeof window === \"undefined\") return;\n      document.cookie = createFarmLocaleCookie(locale, { cookie: snapshot.cookie });\n      const href = `${window.location.pathname}${window.location.search}${window.location.hash}`;\n      window.location.assign(localizeFarmHref(href, locale, snapshot));\n    },\n  };\n}\n\nfunction readRendererRouterSnapshot(\n  basePath: string,\n  matcher: FarmRouter | null,\n  navigation: FarmNavigationState,\n): FarmRendererRouterSnapshot {\n  if (typeof window === \"undefined\") {\n    return {\n      pathname: \"/\",\n      searchParams: new URLSearchParams(),\n      params: {},\n      pageState: null,\n      navigation,\n    };\n  }\n\n  const url = new URL(window.location.href);\n  const pathname = stripFarmBasePath(url.pathname, basePath);\n  const i18n = getFarmI18nClientState();\n  const routePathname = i18n ? stripFarmLocaleFromPathname(pathname, i18n) : pathname;\n\n  return {\n    pathname,\n    searchParams: url.searchParams,\n    params: matcher?.match(routePathname)?.params || {},\n    pageState: readPageState(),\n    navigation,\n  };\n}\n\nfunction resolveRendererHref(href: string, basePath: string): string {\n  return applyFarmBasePath(href, basePath);\n}\n\nfunction resolveRendererServerFn<TInput, TResult, TError extends Error>(\n  target:\n    | ServerFn<TInput, TResult, TError>\n    | FarmRouteActionTarget<ServerFn<TInput, TResult, TError>>,\n): ServerFn<TInput, TResult, TError> {\n  if (typeof target === \"function\") return target;\n  if (target && typeof target.action === \"function\") return target.action;\n  throw new TypeError(\n    \"createRendererAction requires a server function or a route with a declared action\",\n  );\n}\n\nfunction normalizeRendererClientError(cause: unknown): Error {\n  if (cause instanceof Error) return cause;\n  const error = new Error(typeof cause === \"string\" ? cause : \"FARMJS client operation failed\");\n  (error as Error & { cause?: unknown }).cause = cause;\n  return error;\n}\n\nfunction isRendererFormData(value: unknown): value is FormData {\n  return typeof FormData !== \"undefined\" && value instanceof FormData;\n}\n"],"mappings":"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","names":[]}