@tanstack/start-client-core
Version:
Modern and scalable routing for React applications
51 lines (50 loc) • 3.27 kB
TypeScript
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: {
[]: true;
};
}
}