UNPKG

@tanstack/start-client-core

Version:

Modern and scalable routing for React applications

51 lines (50 loc) 3.27 kB
import { TSS_SERVER_FUNCTION } from './constants.js'; import { AnyFunctionMiddleware, AnyRequestMiddleware, CreateMiddlewareFn } from './createMiddleware.js'; import { CustomFetch } from './createServerFn.js'; import { AnySerializationAdapter, Register, SSROption } from '@tanstack/router-core'; export interface StartInstanceOptions<in out TSerializationAdapters, in out TDefaultSsr, in out TRequestMiddlewares, in out TFunctionMiddlewares> { '~types': StartInstanceTypes<TSerializationAdapters, TDefaultSsr, TRequestMiddlewares, TFunctionMiddlewares>; serializationAdapters?: TSerializationAdapters; defaultSsr?: TDefaultSsr; requestMiddleware?: TRequestMiddlewares; functionMiddleware?: TFunctionMiddlewares; /** * Configuration options for server functions. */ serverFns?: { /** * A custom fetch implementation to use for all server function calls. * This can be overridden by middleware or at the call site. * * Precedence (highest to lowest): * 1. Call site: `serverFn({ fetch: customFetch })` * 2. Later middleware: Last middleware in chain that provides `fetch` * 3. Earlier middleware: First middleware in chain that provides `fetch` * 4. createStart: `createStart({ serverFns: { fetch: customFetch } })` * 5. Default: Global `fetch` function * * @note Only applies on the client side. During SSR, server functions are called directly. */ fetch?: CustomFetch; }; } export interface StartInstance<in out TSerializationAdapters, in out TDefaultSsr, in out TRequestMiddlewares, in out TFunctionMiddlewares> { getOptions: () => Promise<StartInstanceOptions<TSerializationAdapters, TDefaultSsr, TRequestMiddlewares, TFunctionMiddlewares>> | StartInstanceOptions<TSerializationAdapters, TDefaultSsr, TRequestMiddlewares, TFunctionMiddlewares>; createMiddleware: CreateMiddlewareFn<Register>; } export interface StartInstanceTypes<in out TSerializationAdapters, in out TDefaultSsr, in out TRequestMiddlewares, in out TFunctionMiddlewares> { serializationAdapters: TSerializationAdapters; defaultSsr: TDefaultSsr; requestMiddleware: TRequestMiddlewares; functionMiddleware: TFunctionMiddlewares; } export declare const createStart: <const TSerializationAdapters extends ReadonlyArray<AnySerializationAdapter> = [], TDefaultSsr extends SSROption = SSROption, const TRequestMiddlewares extends ReadonlyArray<AnyRequestMiddleware> = [], const TFunctionMiddlewares extends ReadonlyArray<AnyFunctionMiddleware> = []>(getOptions: () => Promise<Omit<StartInstanceOptions<TSerializationAdapters, TDefaultSsr, TRequestMiddlewares, TFunctionMiddlewares>, "~types">> | Omit<StartInstanceOptions<TSerializationAdapters, TDefaultSsr, TRequestMiddlewares, TFunctionMiddlewares>, "~types">) => StartInstance<TSerializationAdapters, TDefaultSsr, TRequestMiddlewares, TFunctionMiddlewares>; export type AnyStartInstance = StartInstance<any, any, any, any>; export type AnyStartInstanceOptions = StartInstanceOptions<any, any, any, any>; declare module '@tanstack/router-core' { interface SerializableExtensions { serverFn: { [TSS_SERVER_FUNCTION]: true; }; } }